Edit report at https://bugs.php.net/bug.php?id=55801&edit=1
ID: 55801 Updated by: m...@php.net Reported by: mapi at pdepend dot org Summary: Behavior of unserialize has changed Status: Assigned Type: Bug Package: Variables related Operating System: Linux (Fedora 15) PHP Version: 5.4.0beta1 Assigned To: mike Block user comment: N Private report: N New Comment: OTOH, the following working script suggests that this is not the source of failure: <?php class node { public $parent; public $nodes = array(); public $path; public $temp; function __toString() { return $this->parent ? $this->parent . "/" . $this->path : $this->path; } function __construct(node $parent = null, $path = ".") { $this->parent = $parent; $this->path = $path; if (is_dir($this)) foreach (scandir($this) as $p) { if ($p[0] != ".") { $this->nodes[] = new node($this, $p); } } } function __sleep() { $this->temp = serialize($this->nodes); return array("path", "temp"); } function __wakeup() { $this->nodes = unserialize($this->temp); $this->temp = null; foreach ($this->nodes as $n) { $n->parent = $this; } } } $tree = new node(null, @$_SERVER["argv"][1] ?: "."); $s = serialize($tree); var_dump($s); $temp = unserialize($s); print_r($temp); Previous Comments: ------------------------------------------------------------------------ [2011-10-03 11:15:26] m...@php.net Ok, I think I found the problematic POC: in line 486 of PHP_Depend_Code_AbstractCallable you call serialize() while another (the prime) serialize calls __sleep() on an instance of this class. What's the intention of this __temp__ thing? ------------------------------------------------------------------------ [2011-10-03 09:45:19] m...@php.net Obviously I did, but it's unclear how... The reproduce case doesn't help much either. ------------------------------------------------------------------------ [2011-10-01 13:58:26] johan...@php.net mike, seems like you broke this. Please take a look. ------------------------------------------------------------------------ [2011-10-01 12:25:51] mapi at pdepend dot org Bingo! With revision 299770 this bug occurs the first time. If I checkout and compile revision 299769 of trunk, everything works as expected. With revision 299770 I get those annoying unserialized arrays with NULL values. ------------------------------------------------------------------------ [2011-09-30 16:09:44] johan...@php.net Can you try reverting SVN revision r299770 and then run your test? - That's mostly a guess, though. bug #36424 http://svn.php.net/viewvc/?view=revision&revision=299770 ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=55801 -- Edit this bug report at https://bugs.php.net/bug.php?id=55801&edit=1