[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: neon pool problem causing buildbot fail

From: Philip Martin <philip_at_codematters.co.uk>
Date: Mon, 23 Apr 2012 19:44:17 +0100

Philip Martin <philip.martin_at_wandisco.com> writes:

> Philip Martin <philip.martin_at_wandisco.com> writes:
>
>> I can fix the valgrind errors with this patch:
>>
>> Index: subversion/libsvn_client/commit.c
>> ===================================================================
>> --- subversion/libsvn_client/commit.c (revision 1327801)
>> +++ subversion/libsvn_client/commit.c (working copy)
>> @@ -782,7 +782,7 @@
>>
>> SVN_ERR(svn_client__open_ra_session_internal(&ra_session, NULL, url, NULL,
>> NULL, FALSE, TRUE, ctx,
>> - scratch_pool));
>> + iterpool));
>>
>> /* Figure out all the path components we need to create just to have
>> a place to stick our imported tree. */
>> @@ -790,8 +790,6 @@
>> iterpool));
>> while (kind == svn_node_none)
>> {
>> - svn_pool_clear(iterpool);
>> -
>> svn_uri_split(&temp, &dir, url, scratch_pool);
>> APR_ARRAY_PUSH(new_entries, const char *) = dir;
>> url = temp;
>>
>> I'm not sure exactly how the pool management is supposed to work here.
>
> That patch is against r1327801 but it also applies to HEAD. This
> patch to HEAD also fixes it:
>
>
> Index: subversion/libsvn_client/commit.c
> ===================================================================
> --- subversion/libsvn_client/commit.c (revision 1329331)
> +++ subversion/libsvn_client/commit.c (working copy)
> @@ -968,6 +968,7 @@
> ctx, iterpool)))
> {
> svn_error_clear(editor->abort_edit(edit_baton, iterpool));
> + svn_pool_destroy(iterpool);
> return svn_error_trace(err);
> }
>
> as does this:
>
>
> Index: subversion/libsvn_client/commit.c
> ===================================================================
> --- subversion/libsvn_client/commit.c (revision 1329331)
> +++ subversion/libsvn_client/commit.c (working copy)
> @@ -965,7 +965,7 @@
> depth, excludes, no_ignore,
> ignore_unknown_node_types,
> filter_callback, filter_baton,
> - ctx, iterpool)))
> + ctx, scratch_pool)))
> {
> svn_error_clear(editor->abort_edit(edit_baton, iterpool));
> return svn_error_trace(err);

Although these "work" I think they are simply covering up the real
problem. In libsvn_ra_neon/commit.c:commit_open_root there is a call to
svn_ra_neon__request_create but no call to svn_ra_neon__request_destroy.
That missing destroy call means that the cleanup handler for the
create-txn request runs much later than those of all the other requests.

-- 
Philip
Received on 2012-04-23 20:44:56 CEST

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.