> Author: jim
> Date: Tue Jun 3 13:07:29 2014
> New Revision: 1599531
>
> URL: http://svn.apache.org/r1599531
> Log:
> Optimize w/ duplicated listeners and use of SO_REUSEPORT
> where available.
>
> Modified:
> httpd/httpd/trunk/CHANGES
> httpd/httpd/trunk/include/ap_listen.h
> httpd/httpd/trunk/server/listen.c
> httpd/httpd/trunk/server/mpm/event/event.c
> httpd/httpd/trunk/server/mpm/prefork/prefork.c
> httpd/httpd/trunk/server/mpm/worker/worker.c
> httpd/httpd/trunk/server/mpm_unix.c
With these changes, I'm getting segfaults with the worker MPM from
current trunk (r1629257) when trying to gracefully restart, i.e. with
SIGUSR1. "Standard" restarts (SIGHUP) seem to work better, though
I'm getting "server seems busy" and "scoreboard is full" log entries
and other errors in this case. A sample stack (CentOS 6 / x86_64)
is shown below, in case it helps in tracking down the issue.
Kaspar
(gdb) bt f
#0 make_child (s=0x7f8b447c26f8, slot=0) at worker.c:1410
pid = <value optimized out>
#1 0x00007f8b43342037 in server_main_loop (_pconf=<value optimized out>,
plog=<value optimized out>,
s=<value optimized out>) at worker.c:1742
status = 0
pid = {pid = 2188, in = 0x7f8b447c26f8, out = 0x7f8b44791138, err =
0x7f8b42811993}
i = <value optimized out>
old_gen = 0
child_slot = 0
exitwhy = APR_PROC_EXIT
processed_status = 0
#2 worker_run (_pconf=<value optimized out>, plog=<value optimized out>,
s=<value optimized out>) at worker.c:1872
remaining_children_to_start = 3
rv = <value optimized out>
i = <value optimized out>
#3 0x00007f8b432ffe7e in ap_run_mpm (pconf=0x7f8b44791138,
plog=0x7f8b447be498, s=0x7f8b447c26f8)
at mpm_common.c:100
pHook = <value optimized out>
n = <value optimized out>
rv = -1
#4 0x00007f8b432f940e in main (argc=1, argv=0x7ffffbee4618) at main.c:799
c = 0 '\000'
showcompile = 0
showdirectives = 1148776984
confname = 0x7f8b433442ea "conf/httpd.conf"
def_server_root = 0x7f8b433442d1 "/home/apache-httpd/trunk"
temp_error_log = 0x0
error = <value optimized out>
process = 0x7f8b4478f218
pconf = 0x7f8b44791138
plog = 0x7f8b447be498
ptemp = 0x7f8b447bc348
pcommands = 0x7f8b447b3248
opt = 0x7f8b447b3338
rv = <value optimized out>
mod = <value optimized out>
opt_arg = 0x0
signal_server = <value optimized out>