Bug #80199 [Opn->Fbk]: PHP leaking memory by not releasing anonymous function declaration

From: Date: Wed, 07 Oct 2020 18:07:36 +0000
Subject: Bug #80199 [Opn->Fbk]: PHP leaking memory by not releasing anonymous function declaration
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-229456@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=80199&edit=1 ID: 80199 Updated by: requinix@php.net Reported by: gilperon at gmail dot com Summary: PHP leaking memory by not releasing anonymous function declaration -Status: Open +Status: Feedback Type: Bug Package: *General Issues Operating System: CENTOS 8 and WINDOWS 10 PHP Version: 7.4.11 Block user comment: N Private report: N New Comment: Are you using $a or $funcao_testar_retorno_parametros? Previous Comments: ------------------------------------------------------------------------ [2020-10-07 17:48:36] gilperon at gmail dot com Description: ------------ Run the test script. In it I am declaring an anonymous function (because I want to be able to unset it later) using eval (my actual function is much more complicated, and I really need to use eval) and unseting it. If you check memory usage while executing this script you will see it will rise, rise and crash. What is weird, is that if I execute the same test script but without using eval (code below) it works just fine, no memory leak, no crash... nothing. Apache barely uses any memory. <?php set_time_limit(0); ini_set('memory_limit','-1'); $aaa = array(); for ($i=0;$i<10000000;$i++) { $aaa[$i] = function($iduc,$cp_ccp) { return ($cp_ccp and $iduc); }; unset($aaa[$i]); } ?> Test script: --------------- <?php set_time_limit(0); ini_set('memory_limit','-1'); $a = array(); for ($i=0;$i<100000000;$i++) { eval(' $a[' . $i . '] = function($i,$da_ca,$iduc,$cp_ccp) { return ($cp_ccp[' . $i . '] and $iduc[' . ($i+1) . ']); }; '); unset($funcao_testar_retorno_parametros[$i]); } ?> Expected result: ---------------- Variable should be unsetted and memory released. Actual result: -------------- Variable does not get out of memory and in a couple minutes crash Apache with lots of error messages complaining about lack of system memory on error_log. ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=80199&edit=1

« previous php.bugs (#229456) next »