Updated: (MODPYTHON-109) Signal handler calling
Web Server forum
Back To The Forum Home!Search!Private Messaging System

Web Server Talk Web Server Talk > Web Servers reviews > Apache Server configuration support > Apache Mod-Python > Updated: (MODPYTHON-109) Signal handler calling




  Last Thread   Next Thread Next
  Show Printable Version Email this Page Subscribe to this Thread      Post New Thread    Post A Reply      

    Updated: (MODPYTHON-109) Signal handler calling  
Graham Dumpleton (JIRA)


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
05-11-07 06:12 AM


[ https://issues.apache.org/jira/brow...ls:all-tabpanel ]

Graham Dumpleton updated MODPYTHON-109:
---------------------------------------

Fix Version/s:     (was: 3.3.1)

> Signal handler calling Py_Finalize() when child processes being killed.
> -----------------------------------------------------------------------
>
>                 Key: MODPYTHON-109
>                 URL: https://issues.apache.org/jira/browse/MODPYTHON-109
>             Project: mod_python
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 3.2.7
>            Reporter: Graham Dumpleton
>         Assigned To: Graham Dumpleton
>         Attachments: MP109_20060308_grahamd_1.diff
>
>
> When Apache is killing off child processes as part of actions taken when the "apac
hectl restart" or "apachectl graceful" command is run, it sends a SIGTERM signal to 
the child processes. This causes a signal handler registered by Apache to be run. Th
at
signal handler destroys the main child memory pool. That memory pool has though a cleanup ha
ndler associated with it which was registered by mod_python. That cleanup handler ultimately
 calls Py_Finalize().
> The problem with this is that Py_Finalize() isn't safe to be called from a signal 
handler and if a handler is still executing or there is a separate thread running in
 the context of Python, a deadlock will likely ensue. This will prevent the child pr
oce
ss exiting due to the SIGTERM causing the Apache parent process to send it a SIGKILL to real
ly kill it.
> For a more detailed assessment of the problem and what lead to this conclu
sion see:
>   http://www.modpython.org/pipermail/...ary/019865.html
>   http://www.modpython.org/pipermail/...ary/019866.html
>   http://www.modpython.org/pipermail/...ary/019870.html
> To avoid the problem, the only choice seems to be avoid calling Py_Finaliz
e() from the signal handler. The simplistic way of doing this seems to be to
 add:
>      if (child_init_pool)
>          return APR_SUCCESS;
> at the start of python_finalize(). This will mean that Py_Finalize() is never call
ed in child processes. The full consequences of this is unknown, but on face value i
t would seem that it might be a reasonable thing to do. More research may be require
d.







[ Post a follow-up to this message ]



    Sponsored Links  




 





   All times are GMT. The time now is 07:31 PM.      Post New Thread    Post A Reply      
  Last Thread   Next Thread Next


Most Popular forums 

Forum Jump:
Rate This Thread:

Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is OFF
 
Medical and Health forum | Computer Games Reviews | Graphics design forum

Back To The Top
Home | Usercp | Faq | Register