|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2002-06-03 05:21 UTC] mfischer@php.net
[2002-06-03 06:16 UTC] tzikmund at iccc dot cz
[2002-10-07 22:08 UTC] iliaa@php.net
[2002-10-10 15:56 UTC] tzikmund at iccc dot cz
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Nov 30 22:00:01 2025 UTC |
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.