From: mike at netagi dot com Operating system: Ubuntu Linux 6.06 LTS PHP version: 4.4.7 PHP Bug Type: DOM XML related Bug description: possible memory leak in DomNode->first_child
Description: ------------ Directly after calling node->first_child the memory usage increases and does not drop. This might also be the case with has_child_nodes. I've tried numerous test cases (as I am trying to keep memory consumption low) but have had no luck. I've tried using functions so the variables lose scope etc. Whatever gets created during the first_child can never be freed. I understand that the Zend Engine may be caching some structures, however i have allocated 120 Meg to PHP4 CLI and it's still returning an out of memory error. If I disable first_child the script runs without any issues. Reproduce code: --------------- $doc = domxml_open_file("import_prod_cat.xml"); $xpath = $doc->xpath_new_context(); $obj = $xpath->xpath_eval('//import_catprod_link'); $nodeset = $obj->nodeset; foreach($nodeset as $node ) { print "S1 " . memory_get_usage() . "\n"; if( $node->has_child_nodes() ) { print " S2 " . memory_get_usage() . "\n"; $child = $node->first_child(); print " S3 " . memory_get_usage() . "\n"; unset($child); unset($node); print " S4 " . memory_get_usage() . "\n"; } print " S6 " . memory_get_usage() . "\n"; } $doc->free(); Actual result: -------------- S1 21202968 S2 21203040 S3 21204416 S4 21204456 S5 21204456 S1 21204456 S2 21204456 S3 21205184 S4 21205224 S5 21205224 S1 21205224 S2 21205224 S3 21205952 S4 21205992 S5 21205992 S1 21205992 S2 21205992 S3 21206720 S4 21206760 S5 21206760 ... etc until it runs out of ram. -- Edit bug report at http://bugs.php.net/?id=41452&edit=1 -- Try a CVS snapshot (PHP 4.4): http://bugs.php.net/fix.php?id=41452&r=trysnapshot44 Try a CVS snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=41452&r=trysnapshot52 Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=41452&r=trysnapshot60 Fixed in CVS: http://bugs.php.net/fix.php?id=41452&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=41452&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=41452&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=41452&r=needscript Try newer version: http://bugs.php.net/fix.php?id=41452&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=41452&r=support Expected behavior: http://bugs.php.net/fix.php?id=41452&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=41452&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=41452&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=41452&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=41452&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=41452&r=dst IIS Stability: http://bugs.php.net/fix.php?id=41452&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=41452&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=41452&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=41452&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=41452&r=mysqlcfg