Edit report at https://bugs.php.net/bug.php?id=60919&edit=1
ID: 60919 Updated by: the...@php.net Reported by: the...@php.net Summary: __wakeup is not called Status: Feedback Type: Bug Package: Scripting Engine problem Operating System: (Any) PHP Version: 5.4.0RC6+ -Assigned To: +Assigned To: stas Block user comment: N Private report: N New Comment: Stas, can you have a look at the patch? Thanks! Previous Comments: ------------------------------------------------------------------------ [2012-02-05 16:28:20] ras...@php.net You should ask Stas for permission to commit this patch to 5.4 before the release. Initializing uninitialized variables tends to be a good idea. ------------------------------------------------------------------------ [2012-02-05 14:03:53] the...@php.net The following patch has been added/updated: Patch Name: init-serialize-levels.diff Revision: 1328450632 URL: https://bugs.php.net/patch-display.php?bug=60919&patch=init-serialize-levels.diff&revision=1328450632 ------------------------------------------------------------------------ [2012-02-05 14:00:32] the...@php.net I can also not reproduce the issue if I compile PHP myself, neither on Linux nor on Windows. >From looking at the diffs between 5.4.0RC5 and current SVN, BG(serialize_lock) >in conjunction with BG(unserialize).level and BG(serialize).level) sticks out. >The thing I think is suspicous here is that BG(unserialize).level gets >assigned to 1 inside a block guarded by if (... || !BG(unserialize).level) {, >but is never assigned to 0. Are we running into this problem because BG(unserialize).level doesn't properly get initialized? I'm not an expert here but is it safe to rely on the compiler doing thos? Same goes for BG(serialize).level, by the way. ------------------------------------------------------------------------ [2012-02-04 17:47:12] the...@php.net But still occurs in php-5.4.0RC7-nts-Win32-VC9-x86 (2012-Feb-02 23:15:00) ------------------------------------------------------------------------ [2012-01-28 21:23:59] ras...@php.net I can't actually reproduce this in the current 5.4 code: % php --version PHP 5.4.0RC7-dev (cli) (built: Jan 28 2012 13:21:30) Copyright (c) 1997-2012 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies % php -r 'class A { function __sleep() { echo "SLEEP\n"; return array(); } function __wakeup() { echo "WAKEUP"; }} $a= unserialize(serialize(new A()));' SLEEP WAKEUP ------------------------------------------------------------------------ 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=60919 -- Edit this bug report at https://bugs.php.net/bug.php?id=60919&edit=1