ID:               17571
 Updated by:       [EMAIL PROTECTED]
 Reported By:      [EMAIL PROTECTED]
-Status:           Open
+Status:           Feedback
 Bug Type:         Scripting Engine problem
 Operating System: Redhat Linux 7.2
 PHP Version:      4.2.1
 New Comment:

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




Previous Comments:
------------------------------------------------------------------------

[2002-06-03 06:16:35] [EMAIL PROTECTED]

I've tried the latest CVS version and it seems the problem is still
here.

------------------------------------------------------------------------

[2002-06-03 05:21:22] [EMAIL PROTECTED]

Ops :) Please try with HEAD.

------------------------------------------------------------------------

[2002-06-03 05:18:59] [EMAIL PROTECTED]

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

Reply via email to