xref: /PHP-8.2/Zend/tests/bug64960.phpt (revision 902d6439)
1--TEST--
2Bug #64960 (Segfault in gc_zval_possible_root)
3--FILE--
4<?php
5// this makes ob_end_clean raise an error
6ob_end_flush();
7
8class ExceptionHandler {
9    public function __invoke (Exception $e)
10    {
11        // this triggers the custom error handler
12        ob_end_clean();
13    }
14}
15
16// this must be a class, closure does not trigger segfault
17set_exception_handler(new ExceptionHandler());
18
19// exception must be thrown from error handler.
20set_error_handler(function()
21{
22    $e = new Exception;
23    $e->_trace = debug_backtrace();
24
25    throw $e;
26});
27
28// trigger error handler
29$a['waa'];
30?>
31--EXPECTF--
32Notice: ob_end_flush(): Failed to delete and flush buffer. No buffer to delete or flush in %sbug64960.php on line 3
33
34Deprecated: Creation of dynamic property Exception::$_trace is deprecated in %s on line %d
35
36Deprecated: Creation of dynamic property Exception::$_trace is deprecated in %s on line %d
37
38Fatal error: Uncaught Exception in %sbug64960.php:19
39Stack trace:
40#0 [internal function]: {closure}(8, 'ob_end_clean():...', '%s', 9)
41#1 %sbug64960.php(9): ob_end_clean()
42#2 [internal function]: ExceptionHandler->__invoke(Object(Exception))
43#3 {main}
44  thrown in %sbug64960.php on line 19
45