Jeff Robbins commented on MODPYTHON-195:

   [[ Old comment, sent from unregistered email on Tue, 24 Oct 2006 09:13:26 
-0400 ]]


I added a printout after the call to apr_pool_user_data_get.  What I think 
is happening is that the hook python_init() is called "again" in the parent 
process (so data is already 1) and then called the expected 2 times in the 
child process (wherein the usual protection works and the bulk of 
python_init() only runs through on the second time in.  The problem is that 
the parent process on windows is long-lived and is just there to spin up and 
down the child process that does the real web serving.  It is the parent 
process run through python_init() that needs to be defeated, and the usual 
protection does no good there.

code in mod_python.c:
rc = apr_pool_userdata_get(&data, userdata_key, s->process->pool);
// JSR
ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, 0, s, "python_init: 
apr_pool_userdata_get() rc=%d data=%x", rc, data);

error log fragment: (with my comments added):
[Tue Oct 24 09:04:41 2006] [notice] Parent: Received restart signal --  
Restarting the server.
[Tue Oct 24 09:04:41 2006] [notice] Child 1952: Exit event signaled. Child 
process is ending.
[Tue Oct 24 09:04:41 2006] [error] python_init: apr_pool_userdata_get() rc=0 
data=1 // this is the call in the parent process that we need to skip
[Tue Oct 24 09:04:41 2006] [notice] Parent: Created child process 9688
[Tue Oct 24 09:04:41 2006] [error] python_init: apr_pool_userdata_get() rc=0 
data=0 // these are the two calls in the new child process
[Tue Oct 24 09:04:41 2006] [error] python_init: apr_pool_userdata_get() rc=0 
[Tue Oct 24 09:04:41 2006] [notice] mod_python: Creating 8 session mutexes 
based on 0 max processes and 50 max threads.
[Tue Oct 24 09:04:41 2006] [notice] Child 9688: Child process is running
[Tue Oct 24 09:04:42 2006] [notice] Child 1952: Released the start mutex
[Tue Oct 24 09:04:42 2006] [notice] Child 9688: Acquired the start mutex.
[Tue Oct 24 09:04:42 2006] [notice] Child 9688: Starting 50 worker threads.

Given the long-lived nature of the parent process, I'm beginning to think 
that your idea of a static might be better than checking for the 

- Jeff

> Possible leaking of Win32 event handles when Apache restarted.
> --------------------------------------------------------------
>                 Key: MODPYTHON-195
>                 URL: http://issues.apache.org/jira/browse/MODPYTHON-195
>             Project: mod_python
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 3.2.10
>            Reporter: Graham Dumpleton
> Jeff Robins in:
> http://mail-archives.apache.org/mod_mbox/httpd-python-dev/200610.mbox/[EMAIL 
> indicates a belief that when an Apache restart is performed on Windows that 
> there are a number of Win32 event handles leaked. His belief is that this 
> seems to be linked to mod_python.

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators: 
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to