Skip to content

Commit 13ca2ba

Browse files
committed
Fix fiber reference in error path
1 parent accd1fb commit 13ca2ba

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/EventLoop/Internal/DriverSuspension.php

+6-3
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,11 @@ public function suspend(): mixed
7676
}
7777

7878
$this->pending = true;
79-
$this->suspendedFiber = $fiber;
8079

8180
// Awaiting from within a fiber.
8281
if ($fiber) {
82+
$this->suspendedFiber = $fiber;
83+
8384
try {
8485
return \Fiber::suspend();
8586
} catch (\FiberError $exception) {
@@ -105,12 +106,14 @@ public function suspend(): mixed
105106
if ($suspensions) {
106107
\gc_collect_cycles();
107108

109+
/** @var self $suspension */
108110
foreach ($suspensions as $suspension) {
109-
if ($suspension->fiber === null) {
111+
$fiber = $suspension->fiberRef?->get();
112+
if ($fiber === null) {
110113
continue;
111114
}
112115

113-
$reflectionFiber = new \ReflectionFiber($suspension->fiber);
116+
$reflectionFiber = new \ReflectionFiber($fiber);
114117
$info .= "\n\n" . $this->formatStacktrace($reflectionFiber->getTrace(\DEBUG_BACKTRACE_IGNORE_ARGS));
115118
}
116119
}

0 commit comments

Comments
 (0)