Greg Ames wrote:
>
> Cliff Woolley wrote:
> >
> > It looks like there might be a problem with _un_graceful restarts on
> > threaded, namely that the whole server just vaporizes.
> After adding many ap_log_errors, looks like things go normally until we
> hit the code in ap_mpm_run responsible for graceless restart. Then it
> sure looks like the parent catches a SIGTERM that it intended to send
> the children in ap_start_shutdown (the normal SIGTERM handler).
confirmed w/gdb:
1310 wake_up_and_die();
(gdb) n
1312 if (is_graceful) {
(gdb) p is_graceful
$3 = 0
(gdb) n
1326 if (unixd_killpg(getpgrp(), SIGTERM) < 0) {
(gdb) s
0x4000d500 in _dl_runtime_resolve () at dl-runtime.c:203
203 dl-runtime.c: No such file or directory.
in dl-runtime.c
(gdb) n
Program received signal SIGTERM, Terminated.
0x4014fd11 in kill () from /lib/libc.so.6
...but then this cleanup stuff for mod_cgid seg faults
(gdb) finish
Run till exit from #0 0x4014fb46 in killpg () from /lib/libc.so.6
0x08064518 in ap_mpm_run (_pconf=0x80c443c, plog=0x80e453c, s=0x80c4984)
at threaded.c:1326
1326 if (unixd_killpg(getpgrp(), SIGTERM) < 0) {
(gdb) n
1329 ap_reclaim_child_processes(1); /* Start with
SIGTERM
(gdb) p shutdown_pending
$4 = 1 <=== gets set in ap_start_shutdown, wasn't on
before
(gdb) n
Program received signal SIGSEGV, Segmentation fault.
apr_pool_clear (a=0x0) at apr_pools.c:869
869 while (a->sub_pools) {
(gdb) bt
#0 apr_pool_clear (a=0x0) at apr_pools.c:869
#1 0x08090320 in apr_pool_destroy (a=0x0) at apr_pools.c:920
#2 0x4027d2ff in cgid_maint (reason=0, data=0x811a724, status=15)
at mod_cgid.c:238
#3 0x0808dd69 in apr_proc_other_child_check () at otherchild.c:208
#4 0x0806ccfc in ap_reclaim_child_processes (terminate=1) at
mpm_common.c:175
#5 0x08064553 in ap_mpm_run (_pconf=0x80c443c, plog=0x80e453c,
s=0x80c4984)
at threaded.c:1329
#6 0x08068e50 in main (argc=1, argv=0xbffff734) at main.c:427
#7 0x4013f0de in __libc_start_main () from /lib/libc.so.6
I've taken mod_cgid out of my build for now (didn't realize I had it
actually) and see what happens. Catching the SIGTERM in the parent
can't be good though.
Greg