#17571 [Fbk->Csd]: Memory leak in basic globals

From: Date: Thu, 10 Oct 2002 20:56:48 +0000
Subject: #17571 [Fbk->Csd]: Memory leak in basic globals
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-22102@lists.php.net to get a copy of this message
ID: 17571 User updated by: tzikmund@iccc.cz Reported By: tzikmund@iccc.cz -Status: Feedback +Status: Closed Bug Type: Scripting Engine problem Operating System: Redhat Linux 7.2 PHP Version: 4.2.1 New Comment: It seems to be all right in the new version. Previous Comments: ------------------------------------------------------------------------ [2002-10-07 22:08:17] iliaa@php.net Please try using this CVS snapshot: http://snaps.php.net/php4-latest.tar.gz For Windows: http://snaps.php.net/win32/php4-win32-latest.zip ------------------------------------------------------------------------ [2002-06-03 06:16:35] tzikmund@iccc.cz I've tried the latest CVS version and it seems the problem is still here. ------------------------------------------------------------------------ [2002-06-03 05:21:22] mfischer@php.net Ops :) Please try with HEAD. ------------------------------------------------------------------------ [2002-06-03 05:18:59] tzikmund@iccc.cz I'm trying to run PHP in my own multithreaded environment. Memory leaks are critical for my application. I've tried to track the leaks down using memprof and I think I've found a leak in basic globals destructor: There's original basic globals destructor source from PHP 4.2.1: static void basic_globals_dtor(php_basic_globals *basic_globals_p TSRMLS_DC) { zend_hash_destroy(&BG(sm_protected_env_vars)); if (BG(sm_allowed_env_vars)) { free(BG(sm_allowed_env_vars)); } #ifdef PHP_WIN32 CoUninitialize(); #endif } There's an item called url_adapt_state_ex in the BG array which seems to be no deallocated in the destructor. I've tried following modification: static void basic_globals_dtor(php_basic_globals *basic_globals_p TSRMLS_DC) { zend_hash_destroy(&BG(sm_protected_env_vars)); if (BG(sm_allowed_env_vars)) { free(BG(sm_allowed_env_vars)); } if (BG(url_adapt_state_ex).tags) { zend_hash_destroy(BG(url_adapt_state_ex).tags); free(BG(url_adapt_state_ex).tags); } #ifdef PHP_WIN32 CoUninitialize(); #endif } I don't know if my modification is clean, but it seems to solve the problem. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=17571&edit=1

« previous php.bugs (#22102) next »