Bill's testing a fix now.  Hopefully we can get it in this week.

Daniel

On 08/31/2017 12:17 PM, Pradeep wrote:
Thanks Dan and Bill for the quick response. As Dan suggested, is moving svc_rqst_xprt_register() to the end
​ of svc_vc_rendezvous()​
the
​ right​
fix?

On Thu, Aug 31, 2017 at 8:30 AM, William Allen Simpson <william.allen.simp...@gmail.com <mailto:william.allen.simp...@gmail.com>> wrote:

    On 8/31/17 9:14 AM, Daniel Gryniewicz wrote:

        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?

    Yes, that's a problem.  I checked v2.5 (ntirpc 1.5) and that has the
    same issue.  It's registering the epoll before doing other essential
    things, like setting up the recvsize and sendsize, and calling (old)
    xp_recv_user_data (now named nfs_rpc_dispatch_tcp_NFS).

    My guess is you're seeing it because the 2.6 epoll loop is much faster.
    We're expecting to find more of these timing and code ordering errors.

    But it looks like a relatively easy fix.

    Thanks for the excellent detailed report.  So helpful!




------------------------------------------------------------------------------
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



------------------------------------------------------------------------------
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

Reply via email to