#48416 [Opn->Fbk]: Memleak in ereg() and eregi() functions
| From: | scottmac@php.net | Date: | Thu, 28 May 2009 17:30:21 +0000 |
| Subject: | #48416 [Opn->Fbk]: Memleak in ereg() and eregi() functions | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-137838@lists.php.net to get a copy of this message | ||
ID: 48416
Updated by: scottmac@php.net
Reported By: bmorel at ssi dot fr
-Status: Open
+Status: Feedback
Bug Type: Regexps related
Operating System: CentOS 5.3
PHP Version: 5.2.9
New Comment:
Please try using this CVS snapshot:
http://snaps.php.net/php5.3-latest.tar.gz
For Windows:
http://windows.php.net/snapshots/
Pretty sure this is due to the regular expression cache we have, each
unique regular expression is cached so we don't keep compiling it but
there is no cap on the number we store.
Can you try a 5.3 snapshot, I think we switched from using ereg to pcre
with 5.3.
Previous Comments:
------------------------------------------------------------------------
[2009-05-28 16:57:59] bmorel at ssi dot fr
Description:
------------
When repeating an ereg() or eregi() on different patterns, the memory
usage of httpd (or php if executed from the command-line) gets huge
(about 1GB for the example below) for the time the script executes, then
the memory is freed.
During this time, the memory_get_usage() stays normal, and php's memory
limit doesn't trigger.
When repeating the ereg() with the same pattern each time, the memory
usage stays normal; this happens only when repeating with a different
pattern each time.
Verified on CentOS with PHP 5.2.6 & 5.2.9
Verified on Windows XP with PHP 5.2.8
Reproduce code:
---------------
<?php
for ($i=0;$i<1000000;$i++) ereg("$i","test");
?>
Expected result:
----------------
Memory usage staying low.
Actual result:
--------------
Memory usage as shown by "top -d 1" gets huge.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=48416&edit=1