Edit report at https://bugs.php.net/bug.php?id=50480&edit=1
ID: 50480 Updated by: [email protected] Reported by: lesjno at free dot fr Summary: memory leak with eval() -Status: Open +Status: Feedback Type: Bug Package: Scripting Engine problem Operating System: * PHP Version: 5.3.1 Block user comment: N Private report: N New Comment: Please try using this snapshot: http://snaps.php.net/php5.3-latest.tar.gz For Windows: http://windows.php.net/snapshots/ Previous Comments: ------------------------------------------------------------------------ [2011-09-12 19:54:19] horsarias at hotmail dot com Hi, my php console process reaches the memory limit after some days of hard work but the only suspect that i find in de code is the "eval". using linux with php 5.3.6 ( in my code, the eval function is HEAVALY usted with HEAVY arrays being evaluated) Bye ------------------------------------------------------------------------ [2010-05-27 13:26:46] letssurf at gmail dot com PHP Versions: ------------- Tested as broken with 5.2.6 5.3.2 Reproduce code: --------------- <?php // working code, runs for ever $code = 'return false;'; while(true) { $result = eval($code); $mem = memory_get_peak_usage(true); var_dump($result, $mem); } <?php // broken code, dies due to memory limit being reached $code = 'some invalid php code'; while(true) { $result = eval($code); $mem = memory_get_peak_usage(true); var_dump($result, $mem); } Expected result: ---------------- A var_dump of false and the peak memory usage, not increasing. Actual result: -------------- A var_dump of false and the peak memory usage keeps increasing. ------------------------------------------------------------------------ [2010-04-26 10:09:45] lesjno at free dot fr I've just tried the PHP 5.3.2 release but the memory leak remains. The test script is the following : CODE : ------ $status=""; $ch="\$result=true;"; // a chain with a good php syntax $memory_used1 = memory_get_usage(); $status = @eval($ch) ; $memory_used2 = memory_get_usage(); echo "chain to eval : \"$ch\" ==> status = "; var_dump($status); echo "<BR>"; echo "<b>memory difference = ".($memory_used2-$memory_used1)."<BR><BR></b>\n"; $ch="abcdef"; // a chain with a bad php syntaxe $memory_used1 = memory_get_usage(); $status = @eval($ch) ; $memory_used2 = memory_get_usage(); echo "chain to eval : \"$ch\" ==> status = "; var_dump($status); echo "<BR>"; echo "<b>memory difference = ".($memory_used2-$memory_used1)."<BR></b>\n"; Actual result: -------------- chain to eval : "$result=true;" ==> status = NULL memory difference = 512 chain to eval : "abcdef" ==> status = bool(false) memory difference = 8632 Expected result: -------------- chain to eval : "$result=true;" ==> status = NULL memory difference = 0 chain to eval : "abcdef" ==> status = bool(false) memory difference = 0 ------------------------------------------------------------------------ [2010-04-25 20:39:15] [email protected] Please try using this snapshot: http://snaps.php.net/php5.3-latest.tar.gz For Windows: http://windows.php.net/snapshots/ ------------------------------------------------------------------------ [2009-12-24 01:00:01] php-bugs at lists dot php dot net No feedback was provided for this bug for over a week, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open". ------------------------------------------------------------------------ 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=50480 -- Edit this bug report at https://bugs.php.net/bug.php?id=50480&edit=1
