quetz-mod_python-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Graham Dumpleton <grah...@dscpl.com.au>
Subject Re: MODPYTHON-195
Date Tue, 07 Nov 2006 11:02:59 GMT

On 04/11/2006, at 12:34 PM, Jeff Robbins wrote:

> Graham,
> I haven't had any new ideas about this problem.  It is clear that  
> on Windows, mod_python is initialized both in a parent process and  
> more usefully in the child process that spins up the threads that  
> service client requests.  The parent process is long-lived and the  
> standard hack to wait for the second call to the  
> ap_hook_post_config is useless because each "restart" of apache is  
> yet another call (third, fourth, fifth, etc...) and each time  
> there's a leak of one handle.
> The fix I tested seems reasonable.  I know it is dependent on  
> mpm_winnt.c, but, after all, that file is the file responsible for  
> the dual process architecture on windows to begin with.  And the  
> fix has an #ifdef win32 so it won't hurt linux users.
> I'd like you to consider folding it in.  I think it is better than  
> having a leak (along with spurious python initialization) on windows.

Jeff, can you see if you can come up with a test based on  
'initialized' and
'child_init_pool' as I note in:


If it is only in the parent process you need to skip subsequent  
calls, perhaps:

   if (child_init_pool == 0 && initialized != 0)
       return OK;

Will have to think about how this may screw up old versions of Mac OS X
though which is why initialized was added in the first place.

You might include in your debug a call to Py_IsInitialized() so it  
can be
determined if Python thinks it is already initialised. Since your  
fiddle is
working, I'd say it probably is.

Also see if main_server is set and not zero as well and whether its  
is different to 's' passed as argument to function. Whether it is the  
or not may dictate where in function the check to bail out of  
function needs
to be. It may have to go just before the global config and mutexes are


View raw message