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