You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Danilo Piazzalunga <da...@gmail.com> on 2014/03/14 22:53:05 UTC

Bug report: svn assert failure: svn: subversion/libsvn_client/merge.c:3128: merge_dir_deleted: Assertion `delb != ((void *)0)' failed.

Hi all,
I am asking for confirmation before reporting a bug

Using Subversion 1.8.8 installed from Ubuntu 14.04 packages, svn
crashed while performing a merge operation involving a replaced
directory.

I already reportted this bug to Ubuntu Launchpad as
https://bugs.launchpad.net/ubuntu/+source/subversion/+bug/1288829

I was able to reproduce the bug with Subversion 1.9.0-dev trunk
(r1577730) with a self-contained test case (see attachment).

Can I report this to the Issue Tracker?

Regards,
Danilo Piazzalunga

Re: Bug report: svn assert failure: svn: subversion/libsvn_client/merge.c:3128: merge_dir_deleted: Assertion `delb != ((void *)0)' failed.

Posted by Danilo Piazzalunga <da...@gmail.com>.
2014-03-15 11:24 GMT+01:00 Bert Huijben <be...@qqmail.nl>:
> This merge will cause the segfault with --force, while the merge succeeds
> without problems without the --force.
>
> The problem is fixed on trunk in r1577812, but that doesn't remove my
> recommendation of stopping to use --force with 1.8.

Thanks for fixing the issue so quickly! And sorry for my incomplete report.

Best Regards,
Danilo Piazzalunga

RE: Bug report: svn assert failure: svn: subversion/libsvn_client/merge.c:3128: merge_dir_deleted: Assertion `delb != ((void *)0)' failed.

Posted by Bert Huijben <be...@qqmail.nl>.

> -----Original Message-----
> From: Bert Huijben [mailto:bert@qqmail.nl]
> Sent: zaterdag 15 maart 2014 10:31
> To: 'Stefan Sperling'; 'Danilo Piazzalunga'
> Cc: users@subversion.apache.org
> Subject: RE: Bug report: svn assert failure: svn:
> subversion/libsvn_client/merge.c:3128: merge_dir_deleted: Assertion `delb
> != ((void *)0)' failed.
> 
> 
> 
> > -----Original Message-----
> > From: Bert Huijben [mailto:bert@qqmail.nl]
> > Sent: zaterdag 15 maart 2014 10:03
> > To: 'Stefan Sperling'; 'Danilo Piazzalunga'
> > Cc: users@subversion.apache.org
> > Subject: RE: Bug report: svn assert failure: svn:
> > subversion/libsvn_client/merge.c:3128: merge_dir_deleted: Assertion
> `delb
> > != ((void *)0)' failed.
> >
> >
> >
> > > -----Original Message-----
> > > From: Stefan Sperling [mailto:stsp@elego.de]
> > > Sent: zaterdag 15 maart 2014 09:45
> > > To: Danilo Piazzalunga
> > > Cc: users@subversion.apache.org
> > > Subject: Re: Bug report: svn assert failure: svn:
> > > subversion/libsvn_client/merge.c:3128: merge_dir_deleted: Assertion
> > `delb
> > > != ((void *)0)' failed.
> > >
> > > On Fri, Mar 14, 2014 at 10:53:05PM +0100, Danilo Piazzalunga wrote:
> > > > Hi all,
> > > > I am asking for confirmation before reporting a bug
> > > >
> > > > Using Subversion 1.8.8 installed from Ubuntu 14.04 packages, svn
> > > > crashed while performing a merge operation involving a replaced
> > > > directory.
> > > >
> > > > I already reportted this bug to Ubuntu Launchpad as
> > > >
> https://bugs.launchpad.net/ubuntu/+source/subversion/+bug/1288829
> > > >
> > > > I was able to reproduce the bug with Subversion 1.9.0-dev trunk
> > > > (r1577730) with a self-contained test case (see attachment).
> > > >
> > > > Can I report this to the Issue Tracker?
> >
> > It would be nice if the thread (that should be referred from the issue)
> > actually discussed the issue.
> >
> > The only thing discussed here now is that there is some way to trigger
the
> > assertion. Not how it can be triggered, or how common the problem is.
> >
> > And if it is perhaps the result three steps after a user error or
> > something...
> >
> > I really hope the issue will be more informative than the simple text '
> svn
> > assert failure: svn: subversion/libsvn_client/merge.c:3128:
> > merge_dir_deleted: Assertion `delb != ((void *)0)' failed.' as our
> changelog
> > would be 'very user friendly' if we would describe all issues like this.
> 
> The really interesting thing here is the 'svn merge --force'
> Without the '--force' the merge just succeeds without a problem.
> 
> That would be really useful information to add to an issue...
> 
> When I tried to create a reproduction recipe as part of the testsuite that
> was something I missed...
> 
> 
> With Subversion 1.8 I would really recommend not using this argument.
> Before
> 1.8 the merge infrastructure couldn't really test if a directory delete
was
> exactly valid, while with 1.8 we resolved that problem.
> 
> We just don't have many tests that use this '--force' and that is what
> triggers the segfault for you.
> 
> I would assume a bugfix will be in the next patch release as this problem
is
> most likely easy to fix. (I expect that I have a patch in the next half
> hour)

A very minimalistic reproduction is:
$ svn checkout
# r1
$ svn mkdir A
$ svn ci -m ""
# r2

$ svn up -r1
$ svn merge --force --ignore-ancestry -c2 . .

This merge will cause the segfault with --force, while the merge succeeds
without problems without the --force.

The problem is fixed on trunk in r1577812, but that doesn't remove my
recommendation of stopping to use --force with 1.8.


Before Subversion 1.8 merge without --force would sometimes raise invalid
tree conflicts in similar cases, but as that problem has been resolved you
typically want to know about the conflicts that --force will hide from you.

	Bert



RE: Bug report: svn assert failure: svn: subversion/libsvn_client/merge.c:3128: merge_dir_deleted: Assertion `delb != ((void *)0)' failed.

Posted by Bert Huijben <be...@qqmail.nl>.

> -----Original Message-----
> From: Bert Huijben [mailto:bert@qqmail.nl]
> Sent: zaterdag 15 maart 2014 10:03
> To: 'Stefan Sperling'; 'Danilo Piazzalunga'
> Cc: users@subversion.apache.org
> Subject: RE: Bug report: svn assert failure: svn:
> subversion/libsvn_client/merge.c:3128: merge_dir_deleted: Assertion `delb
> != ((void *)0)' failed.
> 
> 
> 
> > -----Original Message-----
> > From: Stefan Sperling [mailto:stsp@elego.de]
> > Sent: zaterdag 15 maart 2014 09:45
> > To: Danilo Piazzalunga
> > Cc: users@subversion.apache.org
> > Subject: Re: Bug report: svn assert failure: svn:
> > subversion/libsvn_client/merge.c:3128: merge_dir_deleted: Assertion
> `delb
> > != ((void *)0)' failed.
> >
> > On Fri, Mar 14, 2014 at 10:53:05PM +0100, Danilo Piazzalunga wrote:
> > > Hi all,
> > > I am asking for confirmation before reporting a bug
> > >
> > > Using Subversion 1.8.8 installed from Ubuntu 14.04 packages, svn
> > > crashed while performing a merge operation involving a replaced
> > > directory.
> > >
> > > I already reportted this bug to Ubuntu Launchpad as
> > > https://bugs.launchpad.net/ubuntu/+source/subversion/+bug/1288829
> > >
> > > I was able to reproduce the bug with Subversion 1.9.0-dev trunk
> > > (r1577730) with a self-contained test case (see attachment).
> > >
> > > Can I report this to the Issue Tracker?
> 
> It would be nice if the thread (that should be referred from the issue)
> actually discussed the issue.
> 
> The only thing discussed here now is that there is some way to trigger the
> assertion. Not how it can be triggered, or how common the problem is.
> 
> And if it is perhaps the result three steps after a user error or
> something...
> 
> I really hope the issue will be more informative than the simple text '
svn
> assert failure: svn: subversion/libsvn_client/merge.c:3128:
> merge_dir_deleted: Assertion `delb != ((void *)0)' failed.' as our
changelog
> would be 'very user friendly' if we would describe all issues like this.

The really interesting thing here is the 'svn merge --force'
Without the '--force' the merge just succeeds without a problem.

That would be really useful information to add to an issue...

When I tried to create a reproduction recipe as part of the testsuite that
was something I missed...

 
With Subversion 1.8 I would really recommend not using this argument. Before
1.8 the merge infrastructure couldn't really test if a directory delete was
exactly valid, while with 1.8 we resolved that problem.

We just don't have many tests that use this '--force' and that is what
triggers the segfault for you.

I would assume a bugfix will be in the next patch release as this problem is
most likely easy to fix. (I expect that I have a patch in the next half
hour)

	Bert


RE: Bug report: svn assert failure: svn: subversion/libsvn_client/merge.c:3128: merge_dir_deleted: Assertion `delb != ((void *)0)' failed.

Posted by Bert Huijben <be...@qqmail.nl>.

> -----Original Message-----
> From: Stefan Sperling [mailto:stsp@elego.de]
> Sent: zaterdag 15 maart 2014 09:45
> To: Danilo Piazzalunga
> Cc: users@subversion.apache.org
> Subject: Re: Bug report: svn assert failure: svn:
> subversion/libsvn_client/merge.c:3128: merge_dir_deleted: Assertion `delb
> != ((void *)0)' failed.
> 
> On Fri, Mar 14, 2014 at 10:53:05PM +0100, Danilo Piazzalunga wrote:
> > Hi all,
> > I am asking for confirmation before reporting a bug
> >
> > Using Subversion 1.8.8 installed from Ubuntu 14.04 packages, svn
> > crashed while performing a merge operation involving a replaced
> > directory.
> >
> > I already reportted this bug to Ubuntu Launchpad as
> > https://bugs.launchpad.net/ubuntu/+source/subversion/+bug/1288829
> >
> > I was able to reproduce the bug with Subversion 1.9.0-dev trunk
> > (r1577730) with a self-contained test case (see attachment).
> >
> > Can I report this to the Issue Tracker?

It would be nice if the thread (that should be referred from the issue)
actually discussed the issue.

The only thing discussed here now is that there is some way to trigger the
assertion. Not how it can be triggered, or how common the problem is.

And if it is perhaps the result three steps after a user error or
something...

I really hope the issue will be more informative than the simple text ' svn
assert failure: svn: subversion/libsvn_client/merge.c:3128:
merge_dir_deleted: Assertion `delb != ((void *)0)' failed.' as our changelog
would be 'very user friendly' if we would describe all issues like this.



	Bert


Re: Bug report: svn assert failure: svn: subversion/libsvn_client/merge.c:3128: merge_dir_deleted: Assertion `delb != ((void *)0)' failed.

Posted by Stefan Sperling <st...@elego.de>.
On Fri, Mar 14, 2014 at 10:53:05PM +0100, Danilo Piazzalunga wrote:
> Hi all,
> I am asking for confirmation before reporting a bug
> 
> Using Subversion 1.8.8 installed from Ubuntu 14.04 packages, svn
> crashed while performing a merge operation involving a replaced
> directory.
> 
> I already reportted this bug to Ubuntu Launchpad as
> https://bugs.launchpad.net/ubuntu/+source/subversion/+bug/1288829
> 
> I was able to reproduce the bug with Subversion 1.9.0-dev trunk
> (r1577730) with a self-contained test case (see attachment).
> 
> Can I report this to the Issue Tracker?


I can reproduce this crash using your script, with 1.8 and trunk.
Please file an issue. Thanks!

Backtrace using a trunk client:

### Merge from trunk.
assertion "delb != NULL" failed: file "subversion/libsvn_client/merge.c", line 3128, function "merge_dir_deleted"
Abort trap (core dumped) 

#1  0x0000045fa5c1999a in abort () at /usr/src/lib/libc/stdlib/abort.c:70
#2  0x0000045fa5b97414 in __assert2 (file=Variable "file" is not available.
) at /usr/src/lib/libc/gen/assert.c:52
#3  0x0000045fa3e27486 in merge_dir_deleted (relpath=0x45fa2d5f0b0 "A/D/G", left_source=0x45f9b03c300, left_props=0x45f9b03c368, 
    dir_baton=0x45f9b03c310, processor=0x45fa5995c60, scratch_pool=0x45f9b03c028) at subversion/libsvn_client/merge.c:3128
#4  0x0000045fa3e5150b in diff_deleted_dir (path=0x45fa2d5f0b0 "A/D/G", pb=0x45fa6f430a0, scratch_pool=0x45f9b03c028)
    at subversion/libsvn_client/repos_diff.c:604
#5  0x0000045fa3e516a2 in delete_entry (path=0x45fa2d5f0b0 "A/D/G", base_revision=5, parent_baton=0x45fa6f430a0, pool=0x45fa2d5f028)
    at subversion/libsvn_client/repos_diff.c:649
#6  0x0000045fa7b4f6ad in delete_entry (path=0x45fa2d5f0b0 "A/D/G", base_revision=5, parent_baton=0x45fa83920d8, pool=0x45fa2d5f028)
    at subversion/libsvn_delta/cancel.c:95
#7  0x0000045fa7b4f6ad in delete_entry (path=0x45fa2d5f0b0 "A/D/G", base_revision=5, parent_baton=0x45fa83920c8, pool=0x45fa2d5f028)
    at subversion/libsvn_delta/cancel.c:95
#8  0x0000045f9ef4bbbe in update_entry (b=0x45f9c002410, s_rev=2, s_path=0x45fa2d5f0a0 "/trunk/A/D/G", s_entry=0x45fa2338228, 
    t_path=0x45fa2d5f0b8 "/trunk/A/D/G", t_entry=0x45fa2338910, dir_baton=0x45fa83920c8, e_path=0x45fa2d5f0b0 "A/D/G", info=0x0, 
    wc_depth=svn_depth_infinity, requested_depth=svn_depth_infinity, pool=0x45fa2d5f028) at subversion/libsvn_repos/reporter.c:1007
#9  0x0000045f9ef4cc89 in delta_dirs (b=0x45f9c002410, s_rev=2, s_path=0x45fa83920a0 "/trunk/A/D", t_path=0x45fa83920b8 "/trunk/A/D", 
    dir_baton=0x45fa83920c8, e_path=0x45fa83920b0 "A/D", start_empty=0, wc_depth=svn_depth_infinity, requested_depth=svn_depth_infinity, 
    pool=0x45fa8392028) at subversion/libsvn_repos/reporter.c:1325
#10 0x0000045f9ef4bebf in update_entry (b=0x45f9c002410, s_rev=2, s_path=0x45fa83920a0 "/trunk/A/D", s_entry=0x45f9d624328, 
    t_path=0x45fa83920b8 "/trunk/A/D", t_entry=0x45f9d624ba8, dir_baton=0x45fa6b9d0c8, e_path=0x45fa83920b0 "A/D", info=0x0, 
    wc_depth=svn_depth_infinity, requested_depth=svn_depth_infinity, pool=0x45fa8392028) at subversion/libsvn_repos/reporter.c:1037
#11 0x0000045f9ef4cc89 in delta_dirs (b=0x45f9c002410, s_rev=2, s_path=0x45fa6b9d0a0 "/trunk/A", t_path=0x45fa6b9d0b8 "/trunk/A", 
    dir_baton=0x45fa6b9d0c8, e_path=0x45fa6b9d0b0 "A", start_empty=0, wc_depth=svn_depth_infinity, requested_depth=svn_depth_infinity, 
    pool=0x45fa6b9d028) at subversion/libsvn_repos/reporter.c:1325
#12 0x0000045f9ef4bebf in update_entry (b=0x45f9c002410, s_rev=2, s_path=0x45fa6b9d0a0 "/trunk/A", s_entry=0x45fa0645210, 
    t_path=0x45fa6b9d0b8 "/trunk/A", t_entry=0x45fa06458f8, dir_baton=0x45f9c0030e8, e_path=0x45fa6b9d0b0 "A", info=0x0, 
    wc_depth=svn_depth_infinity, requested_depth=svn_depth_infinity, pool=0x45fa6b9d028) at subversion/libsvn_repos/reporter.c:1037
#13 0x0000045f9ef4cc89 in delta_dirs (b=0x45f9c002410, s_rev=2, s_path=0x45f9c002b00 "/trunk", t_path=0x45f9c0024e8 "/trunk", 
    dir_baton=0x45f9c0030e8, e_path=0x45f9f057447 "", start_empty=0, wc_depth=svn_depth_infinity, requested_depth=svn_depth_infinity, 
    pool=0x45f9c002028) at subversion/libsvn_repos/reporter.c:1325
#14 0x0000045f9ef4d176 in drive (b=0x45f9c002410, s_rev=2, info=0x45f9c002ac8, pool=0x45f9c002028) at subversion/libsvn_repos/reporter.c:1390
#15 0x0000045f9ef4d5ab in finish_report (b=0x45f9c002410, pool=0x45f9c002028) at subversion/libsvn_repos/reporter.c:1454
#16 0x0000045f9ef4da6b in svn_repos_finish_report (baton=0x45f9c002410, pool=0x45f9c002028) at subversion/libsvn_repos/reporter.c:1551
#17 0x0000045fa150843b in reporter_finish_report (reporter_baton=0x45f9c002698, pool=0x45f9c002028)
    at subversion/libsvn_ra_local/ra_plugin.c:255
#18 0x0000045fa3e2c040 in drive_merge_report_editor (target_abspath=0x45fa59951a0 "/tmp/repro-lp1288829/wc/branches/dev", 
    source=0x45f9c0020a0, children_with_mergeinfo=0x45fa6d9d478, processor=0x45fa5995c60, depth=svn_depth_infinity, merge_b=0x7f7ffffd0490, 
    scratch_pool=0x45f9c002028) at subversion/libsvn_client/merge.c:5767
#19 0x0000045fa3e32742 in do_mergeinfo_aware_dir_merge (result_catalog=0x0, conflict_report=0x7f7ffffd05a8, source=0x45fa59957d8, 
    target_abspath=0x45fa59951a0 "/tmp/repro-lp1288829/wc/branches/dev", children_with_mergeinfo=0x45fa6d9d478, processor=0x45fa5995c60, 
    depth=svn_depth_infinity, squelch_mergeinfo_notifications=0, merge_b=0x7f7ffffd0490, result_pool=0x45fa6d9d028, 
    scratch_pool=0x45fa6d9d028) at subversion/libsvn_client/merge.c:9374
#20 0x0000045fa3e32bbe in do_directory_merge (result_catalog=0x0, conflict_report=0x7f7ffffd05a8, source=0x45fa59957d8, 
    target_abspath=0x45fa59951a0 "/tmp/repro-lp1288829/wc/branches/dev", processor=0x45fa5995c60, depth=svn_depth_infinity, 
    squelch_mergeinfo_notifications=0, merge_b=0x7f7ffffd0490, result_pool=0x45fa6d9d028, scratch_pool=0x45fa6d9d028)
    at subversion/libsvn_client/merge.c:9529
#21 0x0000045fa3e335bf in do_merge (modified_subtrees=0x0, result_catalog=0x0, conflict_report=0x7f7ffffd08a8, use_sleep=0x7f7ffffd0788, 
    merge_sources=0x45fa5995450, target=0x45fa5995178, src_session=0x45f9cd240e0, sources_related=1, same_repos=1, ignore_mergeinfo=0, 
    diff_ignore_ancestry=0, force_delete=1, dry_run=0, record_only=0, record_only_paths=0x0, reintegrate_merge=0, 
    squelch_mergeinfo_notifications=0, depth=svn_depth_infinity, merge_options=0x0, ctx=0x45fa8d6f298, result_pool=0x45fa8d6e028, 
    scratch_pool=0x45fa8d6e028) at subversion/libsvn_client/merge.c:9874
#22 0x0000045fa3e39a9d in do_automatic_merge_locked (conflict_report=0x7f7ffffd08a8, merge=0x45fa59935c0, 
    target_abspath=0x45fa5993530 "/tmp/repro-lp1288829/wc/branches/dev", depth=svn_depth_unknown, diff_ignore_ancestry=0, force_delete=1, 
    record_only=0, dry_run=0, merge_options=0x0, ctx=0x45fa8d6f298, result_pool=0x45fa8d6e028, scratch_pool=0x45fa8d6e028)
    at subversion/libsvn_client/merge.c:12667
#23 0x0000045fa3e37ea3 in svn_client_merge_peg5 (source_path_or_url=0x45fa5993418 "file:///tmp/repro-lp1288829/repos/trunk", 
    ranges_to_merge=0x0, source_peg_revision=0x7f7ffffd0930, target_wcpath=0x45fa5992310 "branches/dev", depth=svn_depth_unknown, 
    ignore_mergeinfo=0, diff_ignore_ancestry=0, force_delete=1, record_only=0, dry_run=0, allow_mixed_rev=0, merge_options=0x0, 
    ctx=0x45fa8d6f298, pool=0x45fa8d6e028) at subversion/libsvn_client/merge.c:11848
#24 0x0000045d98f1dc36 in run_merge (two_sources_specified=0, sourcepath1=0x45fa5993418 "file:///tmp/repro-lp1288829/repos/trunk", 
    peg_revision1={kind = svn_opt_revision_head, value = {number = 4808846680320, date = 4808846680320}}, 
    sourcepath2=0x45fa5993418 "file:///tmp/repro-lp1288829/repos/trunk", targetpath=0x45fa5992310 "branches/dev", ranges_to_merge=0x0, 
    first_range_start={kind = svn_opt_revision_unspecified, value = {number = 0, date = 0}}, first_range_end=
        {kind = svn_opt_revision_unspecified, value = {number = 0, date = 0}}, opt_state=0x7f7ffffd0b90, options=0x0, ctx=0x45fa8d6f298, 
    scratch_pool=0x45fa8d6e028) at subversion/svn/merge-cmd.c:108
#25 0x0000045d98f1e825 in svn_cl__merge (os=0x45fa8d6e520, baton=0x7f7ffffd0de0, pool=0x45fa8d6e028) at subversion/svn/merge-cmd.c:434
#26 0x0000045d98f2e82c in sub_main (exit_code=0x7f7ffffd108c, argc=7, argv=0x7f7ffffd10d0, pool=0x45fa8d6e028) at subversion/svn/svn.c:2943
#27 0x0000045d98f2eaeb in main (argc=7, argv=0x7f7ffffd10d0) at subversion/svn/svn.c:3029

Re: Bug report: svn assert failure: svn: subversion/libsvn_client/merge.c:3128: merge_dir_deleted: Assertion `delb != ((void *)0)' failed.

Posted by Bert Huijben <be...@qqmail.nl>.
Did you read the documentation about adding issues?


Adding an issue isn't part of the process of getting an issue resolved.


So, do you want to be able to find it in a few years?

Or do you want to see it fixed?


If you only want to see it remembered, you can add an issue. But if you want to have it resolved you should discuss the issue here. That will cause somebody to actually look at it, while adding an issue doesn’t.

(I can't look at it now as I can't open your .sh attachment now; and you don't tell anything about the actual problem in your mail)


Just adding an issue will just slow the process of resolving your issue. That is why we have the rule of discussing it on the list…


Bert





From: Danilo Piazzalunga
Sent: ‎Friday‎, ‎March‎ ‎14‎, ‎2014 ‎10‎:‎53‎ ‎PM
To: users@subversion.apache.org





Hi all,
I am asking for confirmation before reporting a bug

Using Subversion 1.8.8 installed from Ubuntu 14.04 packages, svn
crashed while performing a merge operation involving a replaced
directory.

I already reportted this bug to Ubuntu Launchpad as
https://bugs.launchpad.net/ubuntu/+source/subversion/+bug/1288829

I was able to reproduce the bug with Subversion 1.9.0-dev trunk
(r1577730) with a self-contained test case (see attachment).

Can I report this to the Issue Tracker?

Regards,
Danilo Piazzalunga