xref: /PHP-7.1/Zend/tests/bug64960.phpt (revision 7af945e2)
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 throwed 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, Array)
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