1--TEST--
2Stack limit 011 - Stack limit exhaustion during unwinding
3--SKIPIF--
4<?php
5if (!function_exists('zend_test_zend_call_stack_get')) die("skip zend_test_zend_call_stack_get() is not available");
6?>
7--EXTENSIONS--
8zend_test
9--INI--
10zend.max_allowed_stack_size=256K
11--FILE--
12<?php
13
14var_dump(zend_test_zend_call_stack_get());
15
16class Test1 {
17    public function __destruct() {
18        new Test1;
19    }
20}
21
22function replace() {
23    return preg_replace_callback('#.#', function () {
24        try {
25            replace();
26        } finally {
27            new Test1();
28        }
29    }, 'x');
30}
31
32try {
33    replace();
34} catch (Error $e) {
35    echo $e->getMessage(), "\n";
36    echo 'Previous: ', $e->getPrevious()->getMessage(), "\n";
37}
38
39?>
40--EXPECTF--
41array(4) {
42  ["base"]=>
43  string(%d) "0x%x"
44  ["max_size"]=>
45  string(%d) "0x%x"
46  ["position"]=>
47  string(%d) "0x%x"
48  ["EG(stack_limit)"]=>
49  string(%d) "0x%x"
50}
51Maximum call stack size of %d bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion?
52Previous: Maximum call stack size of %d bytes (zend.max_allowed_stack_size - zend.reserved_stack_size) reached. Infinite recursion?
53