Philip Martin <philip.mar...@wandisco.com> writes: > Philip Martin <philip.mar...@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