Hi all,
I'm hitting a crash in TIRPC with Ganesha 2.6-dev.5. It appears to me that
there is a race between a incoming RPC message on a new xprt (for which
accept() was done on the FD) and TIRPC setting the process_cb on the new
xprt.
We set the xprt->xp_dispatch.process_cb() from the rendezvous function
(nfs_rpc_dispatch_tcp_NFS in case of NFS/TCP). This is called at the end of
svc_vc_rendezvous(). But before this happens an RPC request could be
invoking svc_vc_recv() because we have already called accept(). Shouldn't
we setup xprt before accept()?
Here is the stack trace:
#0 0x00007f068057323b in raise () from /lib64/libpthread.so.0
#1 0x00000000004519ed in crash_handler (signo=11, info=0x7f0682073df0,
ctx=0x7f0682073cc0)
at /usr/src/debug/nfs-ganesha-2.6-dev.5/MainNFSD/nfs_init.c:247
#2 <signal handler called>
#3 0x0000000000000000 in ?? ()
#4 0x00007f068013bcd2 in svc_vc_decode (req=0x7f067a01b028) at
/usr/src/debug/nfs-ganesha-2.6-dev.5/libntirpc/src/svc_vc.c:796
#5 0x0000000000450c7b in nfs_rpc_decode_request (xprt=0x7f067b3eef00,
xdrs=0x7f067e449b80)
at
/usr/src/debug/nfs-ganesha-2.6-dev.5/MainNFSD/nfs_rpc_dispatcher_thread.c:1738
#6 0x00007f068013bbe4 in svc_vc_recv (xprt=0x7f067b3eef00) at
/usr/src/debug/nfs-ganesha-2.6-dev.5/libntirpc/src/svc_vc.c:769
#7 0x00007f0680138564 in svc_rqst_xprt_task (wpe=0x7f067b3ef118) at
/usr/src/debug/nfs-ganesha-2.6-dev.5/libntirpc/src/svc_rqst.c:683
#8 0x00007f06801389e4 in svc_rqst_epoll_events (sr_rec=0x7f067a844140,
n_events=1)
at /usr/src/debug/nfs-ganesha-2.6-dev.5/libntirpc/src/svc_rqst.c:856
#9 0x00007f0680138b34 in svc_rqst_epoll_loop (sr_rec=0x7f067a844140) at
/usr/src/debug/nfs-ganesha-2.6-dev.5/libntirpc/src/svc_rqst.c:907
#10 0x00007f0680138c06 in (wpe=0x7f067a844150) at
/usr/src/debug/nfs-ganesha-2.6-dev.5/libntirpc/src/svc_rqst.c:945
#11 0x00007f0680141c1c in work_pool_thread (arg=0x7f067a80e080) at
/usr/src/debug/nfs-ganesha-2.6-dev.5/libntirpc/src/work_pool.c:197
#12 0x00007f068056bdc5 in start_thread () from /lib64/libpthread.so.0
#13 0x00007f067fc3076d in clone () from /lib64/libc.so.6
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Nfs-ganesha-devel mailing list
Nfs-ganesha-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs-ganesha-devel