httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ralf S. Engelschall" <...@engelschall.com>
Subject Re: suexec+CGI = zombies in 1.3.28
Date Mon, 04 Aug 2003 10:07:55 GMT

In article <3F2C483B.2060304@wstoddard.com> you wrote:

>>>Index: alloc.c
>>>===================================================================
>>>RCS file: /e/apache/cvs/apache-1.3/src/main/alloc.c,v
>>>retrieving revision 1.145
>>>diff -u -d -r1.145 alloc.c
>>>--- alloc.c   20 Jun 2003 15:05:40 -0000      1.145
>>>+++ alloc.c   29 Jul 2003 19:07:46 -0000
>>>@@ -2859,12 +2859,8 @@
>>>      if ((p->kill_how == kill_after_timeout)
>>>          || (p->kill_how == kill_only_once)) {
>>>          /* Subprocess may be dead already.  Only need the timeout if not. */
>>>-         if (ap_os_kill(p->pid, SIGTERM) == -1) {
>>>-                p->kill_how = kill_never;
>>>-            }
>>>-            else {
>>>-             need_timeout = 1;
>>>-            }
>>>+         ap_os_kill(p->pid, SIGTERM);
>>>+         need_timeout = 1;
>>>      }
>>>      else if (p->kill_how == kill_always) {
>>>          kill(p->pid, SIGKILL);
>> 
> So you sucessfully kill the process, then you set need_timeout. You swap 
> out and another process is started (by an httpd process) on the system 
> with the same pid. Your swaped back in, detect the process (thinking it 
> is the old process still hanging around) and kill it after a timeout. 
> Is this possible or not?

AFAIK it is not possible under Unix, because (due to the fact that you
are the parent process) unless you waitpid() on your child process, the
process cannot be just replaced by another. The child process might
have received the SIGTERM and even terminated, but the process as a
Unix entity is still hanging around (for you) unless you (the parent)
successfully fetched its status. So the important point here is that a
child process cannot just disappear (for whatever reasons!) and even be
replaced until the parent has really handled it (with waitpid).

                                       Ralf S. Engelschall
                                       rse@engelschall.com
                                       www.engelschall.com


Mime
View raw message