apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Erik Lotspeich <e...@lotspeich.org>
Subject Please read: Fix for APR bug
Date Tue, 27 Nov 2007 00:25:00 GMT
Hi all:

I've posted a few messages regarding this topic.  I believe that there 
must be someone interested in this topic who wrote the apr_pools.c 
originally or has worked with apr_pool_note_subprocess().  If not, then I 
suppose that would explain the lack of interest in this problem.

To summarize, I believe that there is a bug either in apr_pools.c (in the 
function free_proc_chain()) or in apr_proc_wait().  I posted a patch to 
this list with a fix that does work.  I didn't begin to dive into 
apr_proc_wait() (which may be the true source of the problem) until I got 
some feedback from the developers on this list.

Any response would be greatly appreciated.

Regards,

Erik.

On Sat, 24 Nov 2007, Erik Lotspeich wrote:

> Hi:
>
> I continued my investigation as to the reason why apr_pool_note_subprocess()
> is not working for me.  It seems that there is a bug in apr_pools.c in the
> function free_proc_chain().  Here's my patch:
>
> --- apr_pools.c 2007-11-24 23:06:12.000000000 -0800
> +++ apr_pools.c+        2007-11-24 23:06:01.000000000 -0800
> @@ -2118,7 +2118,7 @@
> #ifndef NEED_WAITPID
>     /* Pick up all defunct processes */
>     for (pc = procs; pc; pc = pc->next) {
> -        if (apr_proc_wait(pc->proc, NULL, NULL, APR_NOWAIT) !=
> APR_CHILD_NOTDONE)
> +        if (apr_proc_wait(pc->proc, NULL, NULL, APR_NOWAIT) ==
> APR_CHILD_DONE)
>             pc->kill_how = APR_KILL_NEVER;
>     }
> #endif /* !defined(NEED_WAITPID) */
>
> It may be true that apr_proc_wait is the original source of the problem.  In
> theory, both the previous and patched versions of the code above are
> equivalent.  In reality, the doxygen documentation is incomplete.
> apr_proc_wait can return codes other than APR_CHILD_DONE and
> APR_CHILD_NOTDONE.  In my case, the process I to be checked was actually
> running, but an APR_CHILD_NOTDONE code wasn't being set!
>
> Any questions or comments would be appreciated.
>
> Regards,
>
> Erik.
>

Mime
View raw message