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.