1--TEST-- 2Observer: Function observing in fibers with bailout in fiber 3--EXTENSIONS-- 4zend_test 5--INI-- 6zend_test.observer.enabled=1 7zend_test.observer.show_output=1 8zend_test.observer.observe_all=1 9zend_test.observer.fiber_init=1 10zend_test.observer.fiber_switch=1 11zend_test.observer.fiber_destroy=1 12memory_limit=100M 13--FILE-- 14<?php 15 16$notBailedOutFiber = new Fiber(function (): void { 17 var_dump(1); 18 Fiber::suspend(); 19}); 20 21$notBailedOutFiber->start(); 22 23$fiber = new Fiber(function (): void { 24 var_dump(2); 25 Fiber::suspend(); 26 str_repeat('A', 200_000_000); 27}); 28 29$fiber->start(); 30$fiber->resume(); 31 32?> 33--EXPECTF-- 34<!-- init '%s' --> 35<file '%s'> 36 <!-- init Fiber::__construct() --> 37 <Fiber::__construct> 38 </Fiber::__construct> 39 <!-- init Fiber::start() --> 40 <Fiber::start> 41<!-- alloc: %s --> 42<!-- switching from fiber %s to %s --> 43<init '%s'> 44 <!-- init {closure:%s:%d}() --> 45 <{closure:%s:%d}> 46 <!-- init var_dump() --> 47 <var_dump> 48int(1) 49 </var_dump> 50 <!-- init Fiber::suspend() --> 51 <Fiber::suspend> 52<!-- switching from fiber %s to %s --> 53<suspend '%s'> 54 </Fiber::start> 55 <Fiber::__construct> 56 </Fiber::__construct> 57 <Fiber::start> 58<!-- alloc: %s --> 59<!-- switching from fiber %s to %s --> 60<init '%s'> 61 <!-- init {closure:%s:%d}() --> 62 <{closure:%s:%d}> 63 <var_dump> 64int(2) 65 </var_dump> 66 <Fiber::suspend> 67<!-- switching from fiber %s to %s --> 68<suspend '%s'> 69 </Fiber::start> 70 <!-- init Fiber::resume() --> 71 <Fiber::resume> 72<!-- switching from fiber %s to %s --> 73<resume '%s'> 74 </Fiber::suspend> 75 <!-- init str_repeat() --> 76 <str_repeat> 77 78Fatal error: Allowed memory size of 104857600 bytes exhausted %s on line %d 79 </str_repeat> 80 </{closure:%s:%d}> 81<!-- switching from fiber %s to %s --> 82<returned '%s'> 83<!-- destroy: %s --> 84 </Fiber::resume> 85 </file '%s'> 86