httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Adam Sussman <mydd...@vishnu.vidya.com>
Subject prefork segfaults under load
Date Wed, 06 Feb 2002 04:12:49 GMT

I'm seeing a lot of error messages like this in my error log under load with
lots of children (1300 or so):

[Tue Feb 05 12:52:17 2002] [notice] child pid 32299 exit signal Segmentation fault (11), possible
coredump in /tmp
[Tue Feb 05 12:52:17 2002] [notice] child pid 32298 exit signal Segmentation fault (11), possible
coredump in /tmp
[Tue Feb 05 12:52:17 2002] [notice] child pid 32297 exit signal Segmentation fault (11), possible
coredump in /tmp
[Tue Feb 05 12:52:17 2002] [notice] child pid 32296 exit signal Segmentation fault (11), possible
coredump in /tmp
...etc...

This is happening with the prefork mpm and seems to occur only with
new children being spawned by perform_idle_server_maintenance due to a
load spike.  This does not ever happen with low numbers of children.

The interesting thing is that it appears as if the child never makes it
very far after the fork command.  Various debugging code just after the
fork in the child produces nothing.

Below is the stack trace.  At first glance it looks like a parent
trace, but the parent never dies.  It very much looks like the child is
segfaulting from within the fork itself.

Maybe there's some signal wierdness going on here?  The processes which don't
core are often hard to kill off.

#0  pthread_sighandler (signo=11, ctx=
      {gs = 0, __gsh = 0, fs = 0, __fsh = 0, es = 43, __esh = 0, ds = 43, __dsh = 0, edi =
1074716232, esi = 0, ebp = 3221222696, esp = 3221222656, ebx = 1074726616, edx = 1, ecx =
0, eax = 0, trapno = 13, err = 0, eip = 1074677988, cs = 35, __csh = 0, eflags = 66070, esp_at_signal
= 3221222656, ss = 43, __ssh = 0, fpstate = 0x0, oldmask = 2147483648, cr2 = 0})
    at signals.c:87
#1  <signal handler called>
#2  __pthread_reset_main_thread () at internals.h:372
#3  0x400e40e5 in __fork () at ptfork.c:92
#4  0x080762e8 in make_child (s=0x80b9378, slot=1343) at prefork.c:770
#5  0x0807671b in perform_idle_server_maintenance (p=0x80b7578) at prefork.c:963
#6  0x08076a7e in ap_mpm_run (_pconf=0x80b7578, plog=0x80e9640, s=0x80b9378) at prefork.c:1120
#7  0x0807d5d2 in main (argc=1, argv=0xbffffb54) at main.c:501
#8  0x4010d177 in __libc_start_main (main=0x807cca4 <main>, argc=1, ubp_av=0xbffffb54,
init=0x805e22c <_init>, 
    fini=0x809e010 <_fini>, rtld_fini=0x4000e184 <_dl_fini>, stack_end=0xbffffb4c)
at ../sysdeps/generic/libc-start.c:129
(gdb)   

Any clues or pointers would be appreciated.

-adam

Mime
View raw message