[peruser] interesting peruser problem

Alex Timofeyev alext at infobox.ru
Mon Apr 10 09:20:35 MDT 2006


Hi, Stefan

But Multiplexer did not gave segfault by oneself. We have segfaults only 
with users process, but it is not importan. Multiplexor's process still 
working in process tree, but all request to apache is failed. We try 
make strace before it is happened and has same problem, the Multiplexer 
has down on poll. After restarting multiplexer process all begin work 
normally. And this process may working correctly some hours and again 
stopped.

Here is strace what we have before multiplexer failed:

oll([{fd=173, events=POLLIN, revents=POLLIN}], 1, 300000) = 1
read(173, "GET /image/desing/dia_gray.gif H"..., 8000) = 375
gettimeofday({1144424079, 997727}, NULL) = 0
sendmsg(165, {msg_name(0)=NULL, msg_iov(4)=[{"w\1\0\0", 4}, {"\0\0\0\0", 
4}, {"GET /image/desing/dia_gray.gif H"..., 376}, {"", 0}], 
msg_controllen=16, {cmsg_len=16, cmsg_level=SOL_SOCKET, 
cmsg_type=SCM_RIGHTS, {173}}, 
msg_flags=MSG_CTRUNC|MSG_EOR|MSG_ERRQUEUE|MSG_CONFIRM|MSG_RST|MSG_NOSIGNAL|MSG_MORE|0xbfff0000}, 
0) = 384
close(173)                              = 0
read(35, 0xbffff983, 1)                 = -1 EAGAIN (Resource 
temporarily unavailable)
gettimeofday({1144424079, 998147}, NULL) = 0
poll([{fd=8, events=POLLIN, revents=POLLIN}, {fd=37, events=POLLIN}], 2, 
-1) = 1
accept(8, {sa_family=AF_INET, sin_port=htons(55824), 
sin_addr=inet_addr("83.149.3.166")}, [16]) = 173
gettimeofday({1144424079, 998905}, NULL) = 0
gettimeofday({1144424079, 998967}, NULL) = 0
fcntl64(173, F_GETFL)                   = 0x2 (flags O_RDWR)
fcntl64(173, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(173, 0x853fe18, 8000)              = -1 EAGAIN (Resource 
temporarily unavailable)
poll([{fd=173, events=POLLIN, revents=POLLIN}], 1, 300000) = 1
read(173, "GET /image/desing/favorite.gif H"..., 8000) = 375
gettimeofday({1144424080, 200510}, NULL) = 0
sendmsg(165, {msg_name(0)=NULL, msg_iov(4)=[{"w\1\0\0", 4}, {"\0\0\0\0", 
4}, {"GET /image/desing/favorite.gif H"..., 376}, {"", 0}], 
msg_controllen=16, {cmsg_len=16, cmsg_level=SOL_SOCKET, 
cmsg_type=SCM_RIGHTS, {173}}, 
msg_flags=MSG_CTRUNC|MSG_EOR|MSG_ERRQUEUE|MSG_CONFIRM|MSG_RST|MSG_NOSIGNAL|MSG_MORE|0xbfff0000}, 
0) = 384
close(173)                              = 0
read(35, 0xbffff983, 1)                 = -1 EAGAIN (Resource 
temporarily unavailable)
gettimeofday({1144424080, 200862}, NULL) = 0
poll([{fd=8, events=POLLIN, revents=POLLIN}, {fd=37, events=POLLIN}], 2, 
-1) = 1
accept(8, {sa_family=AF_INET, sin_port=htons(4586), 
sin_addr=inet_addr("61.228.150.55")}, [16]) = 173
gettimeofday({1144424080, 201062}, NULL) = 0
gettimeofday({1144424080, 201106}, NULL) = 0
fcntl64(173, F_GETFL)                   = 0x2 (flags O_RDWR)
fcntl64(173, F_SETFL, O_RDWR|O_NONBLOCK) = 0
read(173, 0x853fe18, 8000)              = -1 EAGAIN (Resource 
temporarily unavailable)
poll( <unfinished ...>

> Hi Alex,
>
>   
>> The problem have at Multiplexer, after killing this process apache began
>> working normally. We try do strace on this process
>> and has only
>>
>> strace -p 18271
>> Process 18271 attached - interrupt to quit
>> poll(
>>
>>
>> What all. We are try compiling peruser with gcc-4.1 but has same result.
>>     
>
> Did you try to send another request while stracing the multiplexer? It
> is supposed to block if no requests come in.
>
> The most likely cause for these segfaults is that you do not specifiy
> which user should be used by the vhost serving the request. Make sure
> you have a XXX option in each vhost and a corresponding YYY option in
> the global config.
>
> If you cannot find anything you might want to post your config, allowing
> us to have a look at it.
>
> If there is no problem with the config the most useful piece of
> information is always a backtrace of the crash. Here is a short summary
> how to get one:
>
> You can also try to get a gdb backtrace by doing the following:
> 1) Build apache with the -g option. You can do this by typing
>
> # make CCFLAGS=-g
>
> instead of just
>
> # make
>
> when building apache.
>
> 2) Start apache as usual. Look at the logs to determinate the PID of the
> multiplexer process
>
> 3) Attach the debugger using
>
> # gdb /path/to/httpd PID
>
> 4) The debugger will attach itself and stop the process. Type "continue"
> at the gdb prompt
>
> (gdb) continue
>
> 5) Then issue a request to the server using your favorite Browser,
> telnet or whatever. If the multiplexer dies gdb should show a message
> confirming the segfault and show its prompt. Then you can use the
> backtrace command to find out where it crashed:
>
> (gdb) bt full
>
> 6) send us the output of your gdb session and we might be able to tell more.
>
> Stefan
> _______________________________________________
> Peruser mailing list
> Peruser at telana.com
> http://www.telana.com/mailman/listinfo/peruser
>
>   




More information about the Peruser mailing list