On 5/14/19 7:19 AM, Madhu P Punjabi wrote:
We are seeing crash in svc_release_it(). We are using ganesha V2.7.3 and have taken some recent patches for ntirpc which includes the patch to avoid leaking FDs "Mark ANYFD clients as local clients". We are seeing the following crash repeatedly. Please check the backtrace below. Can there be a chance of having the same 'xprt' getting destroyed twice in clnt_vc_destroy()? Could this crash be related to it?
What do the logs say?
(gdb) l - 423 /* enforce once-only semantic, trace others */ 424 xp_flags = atomic_postset_uint16_t_bits(&xprt->xp_flags, 425 SVC_XPRT_FLAG_RELEASING); 426 if (xp_flags & SVC_XPRT_FLAG_RELEASING) { 427 XPRT_TRACE(xprt, "WARNING! already destroying!", tag, line); 428 return; 429 } 430 431 /* Releasing last reference */ 432 (*(xprt)->xp_ops->xp_destroy)(xprt, flags, tag, line);
That atomic_postset should prevent two destroys. We used to have this problem all the time (since before I'd joined in 2014), so I'd added that.