You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Jeff Trawick <tr...@attglobal.net> on 2004/01/27 15:03:28 UTC

worker MPM parent exits

Colm MacCarthaigh wrote:
> On Mon, Jan 26, 2004 at 10:05:33PM +0000, Colm MacCarthaigh wrote:
> 
>>>disable the check for geteuid()==0 and see if you get backtrace? 
>>>exception hook purposefully doesn't run as root (I assume your parent is 
>>>running as root)
>>
>>No problem, first thing tomorrow :)
>>
> 
> 
> O.k., done that, and now have a useful backtrace (might we worth adding
> a #define to turn those checks off):

yeah...  note that it looks like apache-1.3 is about to get the hook 
too, but it is enabled via a directive in httpd.conf 
(EnableExceptionHook {on|off})..  maybe a special keyword like AllUids 
could be used to enable the hook for root without rebuilding the server...

> backtrace for signal 11 from process 0 (parent 7786, thread "pid" 7789)
> main() is at 808e124
> /usr/local/web/modules/mod_backtrace.so[0x550149bf]
> /usr/local/web/modules/mod_backtrace.so[0x55014a34]
> /usr/local/web/bin/httpd(ap_run_fatal_exception+0x30)[0x80947f8]
> /usr/local/web/bin/httpd[0x8094847]
> /usr/local/web/bin/httpd[0x8094880]

not enough entries in backtrace :)  I guess that is a stack corruption 
issue?

> Attaching gdb to the running process before it dies gets me
> nowhere:
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x00000008 in ?? ()

yeah, been there done that seen that :(

I've been debugging similar problem with 2.0.47 for the last day or 
so...  took a while to happen upon your discussion within the innocuous 
thread "[PATCH] raise MAX_SERVER_LIMIT" ;)

I don't have any hard data yet other than to say I see something roughly 
similar under load and something is corrupted with stackframes 
preventing cores or controlling parent under gdb or apparently any other 
standard techniques from shedding any light on the issue.  I'll be 
adding some sort of tracing to find out more closely what the parent is 
doing when it crashes.

Yesterday I had strace running on parent at the time and the last 
syscall showed it killing a child via write("!"), then SIGSEGV.