From: Operating system: Debian Linux PHP version: 5.4SVN-2012-01-31 (snap) Package: Performance problem Bug Type: Bug Bug description:Memory leak on unserialize for nested objects
Description: ------------ Hi, this is a recurring problem in PHP when unserializing large nested objects. When unserializing inside a loop the same serialized object, the total memory consumption increases every couple of iterations. I am attaching the code to replicate it. Have tested it in the latest 5.4 (snap), it also occurs in 5.3. Let me know if you need any more details, Tested on Debian Linux 64 wheezy/sid, however I believe is platform independent. Couldn't find a bug category for serialize/mem leak related issues. Test script: --------------- <?php $str = base64_decode('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'); for ($i=0; $i<1000; $i++) { echo "Iteration $i\t Mem ".memory_get_usage(true)."\n"; unserialize($str); } Expected result: ---------------- The memory consumption should be stable, it increases with iterations. Actual result: -------------- Result from script: Iteration 0 Mem 262144 Iteration 1 Mem 524288 Iteration 2 Mem 524288 Iteration 3 Mem 524288 Iteration 4 Mem 524288 Iteration 5 Mem 524288 Iteration 6 Mem 524288 Iteration 7 Mem 786432 Iteration 8 Mem 786432 Iteration 9 Mem 786432 Iteration 10 Mem 786432 Iteration 11 Mem 786432 Iteration 12 Mem 786432 Iteration 13 Mem 786432 Iteration 14 Mem 1048576 Iteration 15 Mem 1048576 -- Edit bug report at https://bugs.php.net/bug.php?id=60937&edit=1 -- Try a snapshot (PHP 5.4): https://bugs.php.net/fix.php?id=60937&r=trysnapshot54 Try a snapshot (PHP 5.3): https://bugs.php.net/fix.php?id=60937&r=trysnapshot53 Try a snapshot (trunk): https://bugs.php.net/fix.php?id=60937&r=trysnapshottrunk Fixed in SVN: https://bugs.php.net/fix.php?id=60937&r=fixed Fixed in SVN and need be documented: https://bugs.php.net/fix.php?id=60937&r=needdocs Fixed in release: https://bugs.php.net/fix.php?id=60937&r=alreadyfixed Need backtrace: https://bugs.php.net/fix.php?id=60937&r=needtrace Need Reproduce Script: https://bugs.php.net/fix.php?id=60937&r=needscript Try newer version: https://bugs.php.net/fix.php?id=60937&r=oldversion Not developer issue: https://bugs.php.net/fix.php?id=60937&r=support Expected behavior: https://bugs.php.net/fix.php?id=60937&r=notwrong Not enough info: https://bugs.php.net/fix.php?id=60937&r=notenoughinfo Submitted twice: https://bugs.php.net/fix.php?id=60937&r=submittedtwice register_globals: https://bugs.php.net/fix.php?id=60937&r=globals PHP 4 support discontinued: https://bugs.php.net/fix.php?id=60937&r=php4 Daylight Savings: https://bugs.php.net/fix.php?id=60937&r=dst IIS Stability: https://bugs.php.net/fix.php?id=60937&r=isapi Install GNU Sed: https://bugs.php.net/fix.php?id=60937&r=gnused Floating point limitations: https://bugs.php.net/fix.php?id=60937&r=float No Zend Extensions: https://bugs.php.net/fix.php?id=60937&r=nozend MySQL Configuration Error: https://bugs.php.net/fix.php?id=60937&r=mysqlcfg