From:             mark dot chong at acquireap dot com
Operating system: ubuntu
PHP version:      5.4.15
Package:          Reproducible crash
Bug Type:         Bug
Bug description:Segfault with gc_collect_cycles using unserialize on certain 
objects

Description:
------------
There are a few open bugs this may duplicate, but I have a reproducible
case 
under very specific circumstances:

Having an object that has
 a. circular reference
 b. changes global variable on destructor

If this object is unserialize()'d then gc_collect_cycles will cause a
segfault

Test script:
---------------
<?php
class bad
{
        private $_private = array();

        public function __construct()
        {
                $this->_private[] = 'oh noes';
        }

        public function __destruct()
        {
                //echo "bad::destructor\n";

                global $bar;
                $bar = $this->_private;
        }
}

$foo = new stdclass;
$foo->foo = $foo;
$foo->bad = new bad;
print_r($foo);

gc_disable();

for ($i=0; true; $i++)
{
        $deep_clone = unserialize(serialize($foo));
        gc_collect_cycles();
        var_dump($i);
}

Expected result:
----------------
Script should run indefinitely.

Actual result:
--------------
int(0)
int(1)
Segmentation fault (core dumped)

-- 
Edit bug report at https://bugs.php.net/bug.php?id=64896&edit=1
-- 
Try a snapshot (PHP 5.4):   
https://bugs.php.net/fix.php?id=64896&r=trysnapshot54
Try a snapshot (PHP 5.3):   
https://bugs.php.net/fix.php?id=64896&r=trysnapshot53
Try a snapshot (trunk):     
https://bugs.php.net/fix.php?id=64896&r=trysnapshottrunk
Fixed in SVN:               https://bugs.php.net/fix.php?id=64896&r=fixed
Fixed in release:           https://bugs.php.net/fix.php?id=64896&r=alreadyfixed
Need backtrace:             https://bugs.php.net/fix.php?id=64896&r=needtrace
Need Reproduce Script:      https://bugs.php.net/fix.php?id=64896&r=needscript
Try newer version:          https://bugs.php.net/fix.php?id=64896&r=oldversion
Not developer issue:        https://bugs.php.net/fix.php?id=64896&r=support
Expected behavior:          https://bugs.php.net/fix.php?id=64896&r=notwrong
Not enough info:            
https://bugs.php.net/fix.php?id=64896&r=notenoughinfo
Submitted twice:            
https://bugs.php.net/fix.php?id=64896&r=submittedtwice
register_globals:           https://bugs.php.net/fix.php?id=64896&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=64896&r=php4
Daylight Savings:           https://bugs.php.net/fix.php?id=64896&r=dst
IIS Stability:              https://bugs.php.net/fix.php?id=64896&r=isapi
Install GNU Sed:            https://bugs.php.net/fix.php?id=64896&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=64896&r=float
No Zend Extensions:         https://bugs.php.net/fix.php?id=64896&r=nozend
MySQL Configuration Error:  https://bugs.php.net/fix.php?id=64896&r=mysqlcfg

Reply via email to