1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
--TEST--
Bug #79710: Reproducible segfault in error_handler during GC involved an SplFileObject
--FILE--
<?php
class Target
{
public $sfo;
public function __construct($sfo) {
$this->sfo = $sfo;
}
public function __destruct() {
// If the SplFileObject is destructed first,
// underlying FD is no longer valid and will cause error upon calling flock
$this->sfo->flock(2);
}
}
class Run
{
static $sfo;
static $foo;
public static function main() {
// Creation ordering is important for repro
// $sfo needed to be destructed before $foo.
Run::$sfo = new SplTempFileObject();
Run::$foo = new Target(Run::$sfo);
}
}
Run::main();
?>
--EXPECTF--
Fatal error: Uncaught Error: Object not initialized in %s:%d
Stack trace:
#0 %s(%d): SplFileObject->flock(2)
#1 [internal function]: Target->__destruct()
#2 {main}
thrown in %s on line %d
|