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" 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(>shared.xdrs_in);
> XDR_DESTROY(>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(>shared.xdrs_in);
> + XDR_DESTROY(>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(>shared.xdrs_in, 0, sizeof xd->shared.xdrs_in);
> memset(>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