xref: /PHP-8.1/Zend/tests/bug64960.phpt (revision f8d79582)
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
34Fatal error: Uncaught Exception in %sbug64960.php:19
35Stack trace:
36#0 [internal function]: {closure}(8, 'ob_end_clean():...', '%s', 9)
37#1 %sbug64960.php(9): ob_end_clean()
38#2 [internal function]: ExceptionHandler->__invoke(Object(Exception))
39#3 {main}
40  thrown in %sbug64960.php on line 19
41