diff --git a/Zend/tests/fibers/gh10496.phpt b/Zend/tests/fibers/gh10496-001.phpt similarity index 83% rename from Zend/tests/fibers/gh10496.phpt rename to Zend/tests/fibers/gh10496-001.phpt index 76ea5fea78c..9ca371fa2a6 100644 --- a/Zend/tests/fibers/gh10496.phpt +++ b/Zend/tests/fibers/gh10496-001.phpt @@ -1,5 +1,5 @@ --TEST-- -Bug GH-10496 (Segfault when garbage collector is invoked inside of fiber) +Bug GH-10496 001 (Segfault when garbage collector is invoked inside of fiber) --FILE-- start(); + })(); + })(); +}); +$f->start(); +$f->resume(); + +?> +--EXPECT-- +Success diff --git a/Zend/zend_fibers.c b/Zend/zend_fibers.c index ab8d7098cf0..5e83808f8af 100644 --- a/Zend/zend_fibers.c +++ b/Zend/zend_fibers.c @@ -743,7 +743,7 @@ static HashTable *zend_fiber_object_gc(zend_object *object, zval **table, int *n zend_get_gc_buffer_add_zval(buf, &fiber->fci.function_name); zend_get_gc_buffer_add_zval(buf, &fiber->result); - if (fiber->context.status != ZEND_FIBER_STATUS_SUSPENDED) { + if (fiber->context.status != ZEND_FIBER_STATUS_SUSPENDED || fiber->caller != NULL) { zend_get_gc_buffer_use(buf, table, num); return NULL; }