On 08/30/2017 10:06 PM, Pradeep wrote:
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()?

Not the accept itself, but adding the accepted fd to epoll, which is also happening before the rendezvous. I think the call to svc_rqst_xprt_register() needs to be last, or a lock needs to be taken.

Bill?

Daniel


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
[email protected]
https://lists.sourceforge.net/lists/listinfo/nfs-ganesha-devel



------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/nfs-ganesha-devel

Reply via email to