From: s dot araya at numisys dot com dot ar
Operating system: Linux (Gentoo)
PHP version: 5.0.3
PHP Bug Type: Math related
Bug description: GMP functions didn't free memory
Description:
------------
Hello,
I'm using gmp library to perform a function which uses a few operations
with large integer values. My script runs in console mode (at least four
hours of processing), scanning a big mysql table and invoking the function
to calculate big integer values that are stored in the table.
But, in case the table has a lot of rows to process, the script halt
with 'out of memory' error. Studying the problem I realized that GMP
functions didn't free memory (when I issue unset( <resource> ) ) and
continue allocate memory in every function pass. There is no gmp_free() in
php manual.
Is there any workaround to avoid the problem?
Thank you,
Sebasti�n Araya
Numisys S.A.
Reproduce code:
---------------
for( $i = 0; $i = 1000000; $i++)
store_calc_value( $i );
function store_calc_value( $v )
{
$a = gmp_mul( $v, "0x100000000" );
$b = gmp_mul( $a, "0x1000" );
$sql = "Insert into t (big, value) Values (";
$sql.= gmp_strval( $a ) . ", " . gmp_strval( $b ) . ")";
mysql_query( $sql );
unset( $a ); // gmp_free( $a );
unset( $b ); // gmp_free( $b );
}
Expected result:
----------------
I expect that memory has to be freed once returning from function
store_calc_value(). A simple top command in another Linux session, tell me
that php resource continue to grow.
--
Edit bug report at http://bugs.php.net/?id=33249&edit=1
--
Try a CVS snapshot (php4): http://bugs.php.net/fix.php?id=33249&r=trysnapshot4
Try a CVS snapshot (php5.0):
http://bugs.php.net/fix.php?id=33249&r=trysnapshot50
Try a CVS snapshot (php5.1):
http://bugs.php.net/fix.php?id=33249&r=trysnapshot51
Fixed in CVS: http://bugs.php.net/fix.php?id=33249&r=fixedcvs
Fixed in release: http://bugs.php.net/fix.php?id=33249&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=33249&r=needtrace
Need Reproduce Script: http://bugs.php.net/fix.php?id=33249&r=needscript
Try newer version: http://bugs.php.net/fix.php?id=33249&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=33249&r=support
Expected behavior: http://bugs.php.net/fix.php?id=33249&r=notwrong
Not enough info:
http://bugs.php.net/fix.php?id=33249&r=notenoughinfo
Submitted twice:
http://bugs.php.net/fix.php?id=33249&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=33249&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=33249&r=php3
Daylight Savings: http://bugs.php.net/fix.php?id=33249&r=dst
IIS Stability: http://bugs.php.net/fix.php?id=33249&r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=33249&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=33249&r=float
No Zend Extensions: http://bugs.php.net/fix.php?id=33249&r=nozend
MySQL Configuration Error: http://bugs.php.net/fix.php?id=33249&r=mysqlcfg