On 5/15/05, Jeff Trawick <[EMAIL PROTECTED]> wrote:
> Apache keeps the read handle to the pipe open in the child process.
> Thus, if the piped logger goes away and a new piped logger doesn't
> inherit the same handles, a child process can hang writing to the
> logger since the child process itself is keeping the read side of the
> pipe open.
> 
> The scenario where this leads to a hang is during graceful restart.
> The child process is busy writing to the logging pipe (enough to cause
> them to block due to kernel pipe flow control).  Then the parent
> process whacks the piped logger and closes its handles to that pipe as
> part of restart processing.  The child process is stuck forever trying
> to write to the pipe.

I stuck a patch for 1.3 at http://people.apache.org/~trawick/pr26467_13.txt

I need to test a little more and convince myself that it is okay to
represent pipe handles with int (e.g., because other platforms don't
use that code??).  I guess the new code needs to be conditional based
on platform.  Anybody want to play with it?

Reply via email to