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