Hi Bill, Here's a thought: why not spend more time doing useful work, and less time trying to find someone to blame for changed behavior your own work introduced.
Matt ----- "William Allen Simpson" <william.allen.simp...@gmail.com> wrote: > Last week, Daniel G had to revert one of my patches, because the CEA > tests segfaulted during shutdown. Neither of us could reproduce. > > Yesterday, I updated my Fedora debuginfos. Suddenly, I could > reproduce! > > After _many_ *MANY* hours, I've discovered that it wasn't in my patch. > :( > > ntirpc git log b4254b92 claims that it is a patch based upon > valgrind. > The long log message is almost entirely about Ganesha, not ntirpc. > It > was approved by Matt Benjamin. > > In fact, the commit is almost entirely useless for ntirpc. > > Here's the change in its entirely. It's shorter than the log > message: > > git diff b4254b92^ b4254b92 > diff --git a/src/clnt_vc.c b/src/clnt_vc.c > index 174e7e2..57f2b23 100644 > --- a/src/clnt_vc.c > +++ b/src/clnt_vc.c > @@ -312,7 +312,7 @@ clnt_vc_ncreate2(int fd, /* open file > descriptor */ > if (ct->ct_addr.len) > mem_free(ct->ct_addr.buf, ct->ct_addr.len); > > - if (xd->refcnt == 1) { > + if (xd->refcnt == 0) { > XDR_DESTROY(&xd->shared.xdrs_in); > XDR_DESTROY(&xd->shared.xdrs_out); > free_x_vc_data(xd); > diff --git a/src/svc_vc.c b/src/svc_vc.c > index cabd325..e5071c1 100644 > --- a/src/svc_vc.c > +++ b/src/svc_vc.c > @@ -658,10 +658,13 @@ svc_rdvs_destroy(SVCXPRT *xprt, u_int flags, > const char *tag, const int line) > mem_free(rdvs, sizeof(struct cf_rendezvous)); > mem_free(xprt, sizeof(SVCXPRT)); > > - refcnt = rpc_dplx_unref(rec, > - RPC_DPLX_FLAG_LOCKED | > RPC_DPLX_FLAG_UNLOCK); > - if (!refcnt) > - mem_free(xd, sizeof(struct x_vc_data)); > + (void)rpc_dplx_unref(rec, RPC_DPLX_FLAG_LOCKED | > RPC_DPLX_FLAG_UNLOCK); > + > + if (xd->refcnt == 0) { > + XDR_DESTROY(&xd->shared.xdrs_in); > + XDR_DESTROY(&xd->shared.xdrs_out); > + free_x_vc_data(xd); > + } > } > > static void > === > > It's crashing on the first XDR_DESTROY(). > > That will never work, because as the code states in > svc_vc_ncreate2(): > > /* duplex streams are not used by the rendevous transport */ > memset(&xd->shared.xdrs_in, 0, sizeof xd->shared.xdrs_in); > memset(&xd->shared.xdrs_out, 0, sizeof xd->shared.xdrs_out); > > === > > That code was copy and pasted from clnt_vc.c in the same patch?!?! > > Why did my patch discover the problem? Because svc_rdvs_destroy() > was > not being called on shutdown.... My patch fixes that bug. > > *** So valgrind couldn't possibly have found this as an error. *** > > I'll fix it in my future patch. But we need to be a lot more > careful, > and should not have irrelevant commit log messages that obscure the > actual underlying changes in the patch. > > Time for bed.... > > ------------------------------------------------------------------------------ > 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 -- Matt Benjamin CohortFS, LLC. 315 West Huron Street, Suite 140A Ann Arbor, Michigan 48103 http://cohortfs.com tel. 734-761-4689 fax. 734-769-8938 cel. 734-216-5309 ------------------------------------------------------------------------------ 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