|
Jamie Kirkpatrick
jkp at kirkconsulting.co.uk
Wed Mar 16 14:03:16 EST 2005
On 16 Mar 2005, at 10:05, Graham Dumpleton wrote:
>
> On 16/03/2005, at 8:42 PM, Jamie Kirkpatrick wrote:
>
>> Next after a restart: just after restarting, before calling
>> anything I check the logs -
>>
>> [Wed Mar 16 09:33:26 2005] [error] interpreter name that was passed
>> is:
>> [Wed Mar 16 09:33:26 2005] [error] interpreter name that was passed
>> is:
>> [Wed Mar 16 09:33:26 2005] [error] interpreter name that was passed
>> is:
>> [Wed Mar 16 09:33:26 2005] [error] interpreter name that was passed
>> is:
>> [Wed Mar 16 09:33:26 2005] [error] interpreter name that was passed
>> is:
>>
>> A minute or so later I check back and i see
>>
>> [Wed Mar 16 09:33:32 2005] [warn] child process 25283 still did not
>> exit, sending a SIGTERM
>> [Wed Mar 16 09:33:32 2005] [warn] child process 25284 still did not
>> exit, sending a SIGTERM
>> [Wed Mar 16 09:33:32 2005] [warn] child process 25285 still did not
>> exit, sending a SIGTERM
>> [Wed Mar 16 09:33:32 2005] [warn] child process 25286 still did not
>> exit, sending a SIGTERM
>> [Wed Mar 16 09:33:32 2005] [warn] child process 25287 still did not
>> exit, sending a SIGTERM
>
> In one place in the code, it passed NULL for the interpreter name so
> the code you added to log the name is probably causing the crash. You
> thus may need to do something like:
>
> if (name != NULL)
> ... log that name is NULL
> else
> ... log the name
>
> BTW, can you confirm that you have the Mac OS X fix for Python 2.3
> (standard)
> that I have previously mentioned. If you have applied the patch, in
> python_init()
> there will be:
>
> /* initialize global Python interpreter if necessary */
> if (initialized == 0 || ! Py_IsInitialized())
> {
> initialized = 1;
>
> where as unpatched mod_python has:
>
> /* initialize global Python interpreter if necessary */
> if (! Py_IsInitialized())
> {
>
I'm unpatched...I tried first by making the alteration to the logging
of name and including the other logging statement shown below.
<snip>
> /* initialize global Python interpreter if necessary */
> if (! Py_IsInitialized())
> {
>
> ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, 0, srv,
> "Performing Initialisation.");
So, after a normal start error log shows:
[Wed Mar 16 11:03:43 2005] [notice] mod_python: Creating 32 session
mutexes based on 150 max processes and 0 max threads.
[Wed Mar 16 11:03:43 2005] [error] Performing Initialisation.
[Wed Mar 16 11:03:43 2005] [notice] Digest: generating secret for
digest authentication ...
[Wed Mar 16 11:03:43 2005] [notice] Digest: done
[Wed Mar 16 11:03:44 2005] [notice] Apache/2.0.53 (Unix) DAV/2
mod_python/3.1.3 Python/2.4 configured -- resuming normal operations
Then I call the test script:
[Wed Mar 16 11:04:52 2005] [error] The name passed was:
[Wed Mar 16 11:04:52 2005] [error] thegrove.homeip.net
[Wed Mar 16 11:04:53 2005] [notice] mod_python: (Re)importing module
'test'
[Wed Mar 16 11:04:53 2005] [error] start import
[Wed Mar 16 11:04:53 2005] [error] end import
[Wed Mar 16 11:04:53 2005] [error] start handler
[Wed Mar 16 11:04:53 2005] [error] end handler
[Wed Mar 16 11:04:53 2005] [error] Name was NULL.
Cool - fixed that crash (my fault!), but it still puzzles me why the
handler gets called again here.
Now a restart - the following is added to the logs:
[Wed Mar 16 11:06:01 2005] [error] Name was NULL.
[Wed Mar 16 11:06:01 2005] [error] Name was NULL.
[Wed Mar 16 11:06:01 2005] [error] Name was NULL.
[Wed Mar 16 11:06:01 2005] [error] Name was NULL.
[Wed Mar 16 11:06:01 2005] [error] Name was NULL.
[Wed Mar 16 11:06:01 2005] [error] Name was NULL.
[Wed Mar 16 11:06:07 2005] [notice] SIGHUP received. Attempting to
restart
[Wed Mar 16 11:06:07 2005] [notice] mod_python: Creating 32 session
mutexes based on 150 max processes and 0 max threads.
[Wed Mar 16 11:06:07 2005] [notice] Digest: generating secret for
digest authentication ...
[Wed Mar 16 11:06:07 2005] [notice] Digest: done
[Wed Mar 16 11:06:08 2005] [notice] Apache/2.0.53 (Unix) DAV/2
mod_python/3.1.3 Python/2.4 configured -- resuming normal operations
Again I have multiple instances of httpd running now ... is this normal?
Now to make the call again:
[Wed Mar 16 11:08:09 2005] [error] The name passed was:
[Wed Mar 16 11:08:09 2005] [error] thegrove.homeip.net
[Wed Mar 16 11:08:09 2005] [error] python_handler: interpreters
dictionary not initialised.
Same results as before - at least we eliminated the crash i introduced!
Next I tried compiling again with the os x patch started normal and
pulled up the page - this yields the same log as what i have posted
above. Now the restart - again, the same logs as i posted above, and
pulling up the page works!
So, basically, it seems that I have been unfortunate enough not to have
stumbled on your patch when I was working on this. Is there any reason
it hasn't been rolled into the main trunk yet? A few #IFDEF DARWIN or
suchlike could surely allow the inclusion of such a patch. I will take
the immediate measure of posting my findings to the darwinports mailing
lists in order to make them aware of the issue and the fix. I have to
say, that from the point of view of an OS X user it would be useful to
at least mention the patch in one of the docs in the main disto. I
appologise for seemingly wasting your time, but I honestly spent days
on this and never stumbled on that patch - the only patches I saw were
for the Makefile's.
Many thanks for all your time and effort - it has been educational for
me at least! I would like to hear whether or not this patch will in
some way be added to the main release anyway.
Cheers Graham
Jamie
|