[OpenAFS-devel] Fileserver (from openafs-server-1.6.5-1.el6.x86_64) segmentation fault

Harald Barth haba@kth.se
Tue, 13 Aug 2013 11:05:01 +0200 (CEST)


Our fileserver fell over with:

Program terminated with signal 11, Segmentation fault.
#0  0x000000000046e190 in rx_GetCall (tno=21, 
    cur_service=<value optimized out>, socketp=0x7f0aeb5fddbc)
    at ../rx/rx.c:2002
2002                for (queue_Scan(&rx_incomingCallQueue, tcall, ncall, rx_call)) {

gdb on the core gives:

(gdb) where
#0  0x000000000046e190 in rx_GetCall (tno=21, 
    cur_service=<value optimized out>, socketp=0x7f0aeb5fddbc)
    at ../rx/rx.c:2002
#1  0x0000000000473604 in rxi_ServerProc (threadID=21, newcall=0x0, 
    socketp=0x7f0aeb5fddbc) at ../rx/rx.c:1835
#2  0x000000000044d3b2 in rx_ServerProc (dummy=<value optimized out>)
    at ../rx/rx_pthread.c:306
#3  0x000000000044ca26 in server_entry (argp=<value optimized out>)
    at ../rx/rx_pthread.c:95
#4  0x00007f0c0c953851 in start_thread () from /lib64/libpthread.so.0
#5  0x00007f0c0bd7811d in clone () from /lib64/libc.so.6

(gdb) p rx_incomingCallQueue
$1 = {prev = 0x7f0b6c0b5310, next = 0x7f0bb408e400}
(gdb) p tcall
$2 = (struct rx_call *) 0x0
(gdb) p ncall
$3 = <value optimized out>
(gdb) p rx_call
No symbol "rx_call" in current context.
(gdb) list
1997                 * already executing */
1998                /* One thread will process calls FCFS (to prevent starvation),
1999                 * while the other threads may run ahead looking for calls which
2000                 * have all their input data available immediately.  This helps
2001                 * keep threads from blocking, waiting for data from the client. */
2002                for (queue_Scan(&rx_incomingCallQueue, tcall, ncall, rx_call)) {
2003                    service = tcall->conn->service;
2004                    if (!QuotaOK(service)) {
2005                        continue;
2006                    }
(gdb) 

queue_Scan seems to be a hideous macro. So some assistance
appreciated.

Harald.