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

Reply via email to