[peruser] interesting peruser problem

Stefan Seufert stefan at seuf.de
Sun Apr 2 07:16:34 MDT 2006


Okay, I've installed CentOS and am now getting segfaults, too. Thanks
for the good preparation, Severn. In my case it doesn't make a
difference if debugging is active or not. So here is a log from a crash:

> [Sun Apr 02 14:09:23 2006] [warn] (peruser: pid=10266 uid=0 child=0) ap_mpm_run(): child #0 has died ...
> [Sun Apr 02 14:09:23 2006] [warn] (peruser: pid=10266 uid=0 child=0) ap_mpm_run(): calling ap_update_child_status_from_indexes
> [Sun Apr 02 14:09:23 2006] [warn] (peruser: pid=10266 uid=0 child=0) ap_mpm_run(): returned from ap_update_child_status_from_indexes
> [Sun Apr 02 14:09:23 2006] [warn] (peruser: pid=10266 uid=0 child=0) ap_mpm_run(): replacing by new child ...
> [Sun Apr 02 14:09:23 2006] [warn] (peruser: pid=10266 uid=0 child=0) make_child(): function entered
> [Sun Apr 02 14:09:23 2006] [warn] (peruser: pid=10269 uid=0 child=0) child_main(): sock_fd_in=8 sock_fd_out=9
> [Sun Apr 02 14:09:23 2006] [warn] (peruser: pid=10269 uid=0 child=0) child_main(): MULTIPLEXER 0
> [Sun Apr 02 14:09:23 2006] [warn] (peruser: pid=10269 uid=0 child=0) child_main(): updating processor stati
> [Sun Apr 02 14:09:23 2006] [warn] (peruser: pid=10269 uid=0 child=0) listen_add(): function entered
> [Sun Apr 02 14:13:40 2006] [warn] (peruser: pid=10269 uid=99 child=0) child_main(): input available ... resetting socket.
> [Sun Apr 02 14:13:40 2006] [warn] (peruser: pid=10269 uid=99 child=0) child_main(): marked jmpbuffer
> [Sun Apr 02 14:13:40 2006] [warn] (peruser: pid=10269 uid=99 child=0) child_main(): calling process_socket()
> [Sun Apr 02 14:13:40 2006] [warn] (peruser: pid=10269 uid=99 child=0) process_socket(): Creating dummy connection to use the vhost lookup api
> [Sun Apr 02 14:13:40 2006] [warn] (peruser: pid=10269 uid=99 child=0) process_socket(): Looking up the right vhost
> [Sun Apr 02 14:13:40 2006] [warn] (peruser: pid=10269 uid=99 child=0) process_socket(): Base server is test.xephris.net, name based vhosts on
> [Sun Apr 02 14:13:40 2006] [warn] (peruser: pid=10269 uid=99 child=0) process_socket(): child_num=0 sock=138409968 sock_fd=18\n
> [Sun Apr 02 14:13:40 2006] [warn] (peruser: pid=10269 uid=99 child=0) process_socket(): type=MULTIPLEXER 0
> [Sun Apr 02 14:13:40 2006] [warn] (peruser: pid=10269 uid=99 child=0) peruser_process_connection(): function entered
> [Sun Apr 02 14:13:40 2006] [warn] (peruser: pid=10269 uid=99 child=0) peruser_process_connection(): leaving (DECLINED)
> [Sun Apr 02 14:13:54 2006] [notice] child pid 10269 exit signal Segmentation fault (11)

It seems to be the multiplexer which is crashing. I'm not sure where
exactly it goes down or why. However it is good to be able to reproduce
the problem. A strace shows that the problem occurs shortly after the
multiplexer has read in the request:

> [pid 10294] <... poll resumed> [{fd=18, events=POLLIN, revents=POLLIN}], 1, 300000) = 1
> [pid 10294] read(18, "GET / HTTP/1.0\r\n", 8000) = 16
> [pid 10294] gettimeofday({1143984089, 170113}, NULL) = 0
> [pid 10294] poll( <unfinished ...>
> [pid 10293] <... select resumed> )      = 0 (Timeout)
> [pid 10293] gettimeofday({1143984089, 349462}, NULL) = 0
> [pid 10293] waitpid(-1, 0xbfe5ac00, WNOHANG|WSTOPPED) = 0
> [pid 10293] select(0, NULL, NULL, NULL, {1, 0}) = 0 (Timeout)
> [pid 10293] gettimeofday({1143984090, 353312}, NULL) = 0
> [pid 10293] waitpid(-1, 0xbfe5ac00, WNOHANG|WSTOPPED) = 0
> [pid 10293] select(0, NULL, NULL, NULL, {1, 0}) = 0 (Timeout)
> [pid 10293] gettimeofday({1143984091, 355113}, NULL) = 0
> [pid 10293] waitpid(-1, 0xbfe5ac00, WNOHANG|WSTOPPED) = 0
> [pid 10293] select(0, NULL, NULL, NULL, {1, 0}) = 0 (Timeout)
> [pid 10293] gettimeofday({1143984092, 356815}, NULL) = 0
> [pid 10293] waitpid(-1, 0xbfe5ac00, WNOHANG|WSTOPPED) = 0
> [pid 10293] select(0, NULL, NULL, NULL, {1, 0}) = 0 (Timeout)
> [pid 10293] gettimeofday({1143984093, 359048}, NULL) = 0
> [pid 10293] waitpid(-1, 0xbfe5ac00, WNOHANG|WSTOPPED) = 0
> [pid 10293] select(0, NULL, NULL, NULL, {1, 0} <unfinished ...>
> [pid 10294] <... poll resumed> [{fd=18, events=POLLIN, revents=POLLIN}], 1, 300000) = 1
> [pid 10294] read(18, "Host: test\r\n", 8000) = 12
> [pid 10294] poll( <unfinished ...>
> [pid 10293] <... select resumed> )      = 0 (Timeout)
> [pid 10293] gettimeofday({1143984094, 362561}, NULL) = 0
> [pid 10293] waitpid(-1, 0xbfe5ac00, WNOHANG|WSTOPPED) = 0
> [pid 10293] select(0, NULL, NULL, NULL, {1, 0} <unfinished ...>
> [pid 10294] <... poll resumed> [{fd=18, events=POLLIN, revents=POLLIN}], 1, 300000) = 1
> [pid 10294] read(18, "\r\n", 8000)      = 2
> [pid 10294] --- SIGSEGV (Segmentation fault) @ 0 (0) ---
> [pid 10294] chdir("/software/httpd")    = 0
> [pid 10294] rt_sigaction(SIGSEGV, {SIG_DFL}, {SIG_DFL}, 8) = 0
> [pid 10294] kill(10294, SIGSEGV)        = 0
> [pid 10294] sigreturn()                 = ? (mask now [])
> [pid 10294] --- SIGSEGV (Segmentation fault) @ 0 (0) ---
> Process 10294 detached
> <... select resumed> )                  = ? ERESTARTNOHAND (To be restarted)
> --- SIGCHLD (Child exited) @ 0 (0) ---

Sean, do you have any ideas where to look for the problem?

Thanks,

Stefan



More information about the Peruser mailing list