You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Daniel Sahlberg <da...@gmail.com> on 2026/10/07 18:33:39 UTC

Re: Bug Report -- Assertion Failure `svn merge` on 1.14.3 from Ubuntu 24.04

Den tors 10 okt. 2024 kl 21:58 skrev Eri Kjeldergaard <kj...@gmail.com>:
>
> The relative path '.' is passed to is_canonical causing an assertion failure in is_canonical when trying to sort the conflicts.
>
> The minimal path to reproduce requires a conflict of at least 2 items.  One of the conflicts should be '.'.
>
>
> Steps to reproduce:
> # create and checkout a repo
> svnadmin create /tmp/test_repo
> svn co file:///tmp/test_repo test_checkout
> cd test_checkout
>
> # stage the conflicts
> ## stage the skeleton
> svn mkdir trunk branches
> svn ci -m 'seed directories'
> svn cp trunk branches/a
> svn ci -m 'create branch a'
> ## stage changes in trunk
> echo "foo" > trunk/foo
> svn add trunk/foo
> svn propset svn:ignore foo trunk
> svn ci -m 'stage trunk'
> ## stage conflicting changes in branches/a
> echo "bar" > branches/a/foo
> svn add branches/a/foo
> svn propset svn:ignore bar branches/a
> svn ci -m 'stage branches/a'
> ## merge
> svn up
> cd branches/a
> svn merge ^/trunk
>
>
> Failure message:
> $ svn merge ^/trunk
> --- Merging r2 through r6 into '.':
>    C foo
>  C   .
> --- Recording mergeinfo for merge of r2 through r6 into '.':
>  U  .
> svn: ../subversion/libsvn_subr/path.c:426: svn_path_compare_paths: Assertion `is_canonical(path1, path1_len)` failed.
>
>
>

Hi Eri,

I saw your request for a JIRA account but I don't think anyone has
replied yet. I'm afraid adding this to JIRA won't do much to help
resolving this issue since we are not really using JIRA to track
future work.

Have you had any chance to look in more detail what goes wrong? A
backtrace or some other debugging may help a long way, a patch would
be even better.

Kind regards,
Daniel

Re: Bug Report -- Assertion Failure `svn merge` on 1.14.3 from Ubuntu 24.04

Posted by Eri Kjeldergaard <kj...@gmail.com>.
Sure.

(gdb) run merge ^/trunk
Starting program: /usr/bin/svn merge ^/trunk
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
--- Merging r2 through r4 into '.':
   C foo
 C .
--- Recording mergeinfo for merge of r2 through r4 into '.':
 U .
svn: ../subversion/libsvn_subr/path.c:426: svn_path_compare_paths:
Assertion `is_canonical(path1, path1_len)' failed.

Program received signal SIGABRT, Aborted.
Download failed: Invalid argument. Continuing without source file
./nptl/./nptl/pthread_kill.c.
__pthread_kill_implementation (no_tid=0, signo=6,
    threadid=<optimized out>)
    at ./nptl/pthread_kill.c:44
warning: 44 ./nptl/pthread_kill.c: No such file or directory
(gdb) bt
#0 __pthread_kill_implementation (no_tid=0, signo=6,
    threadid=<optimized out>)
    at ./nptl/pthread_kill.c:44
#1 __pthread_kill_internal (signo=6,
    threadid=<optimized out>)
    at ./nptl/pthread_kill.c:78
#2 __GI___pthread_kill (threadid=<optimized out>,
    signo=signo@entry=6) at ./nptl/pthread_kill.c:89
#3 0x00007ffff7a4527e in __GI_raise (sig=sig@entry=6)
    at ../sysdeps/posix/raise.c:26
#4 0x00007ffff7a288ff in __GI_abort ()
    at ./stdlib/abort.c:79
#5 0x00007ffff7a2881b in __assert_fail_base (
    fmt=0x7ffff7bd1208 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n",
    assertion=assertion@entry=0x7ffff7e04a28 "is_canonical(path1,
path1_len)",
    file=file@entry=0x7ffff7e049b0 "../subversion/libsvn_subr/path.c",
line=line@entry=426,
    function=function@entry=0x7ffff7e0c270 "svn_path_compare_paths") at
./assert/assert.c:96
#6 0x00007ffff7a3b517 in __assert_fail (
    assertion=0x7ffff7e04a28 "is_canonical(path1, path1_len)",
    file=0x7ffff7e049b0 "../subversion/libsvn_subr/path.c", line=426,
    function=0x7ffff7e0c270 "svn_path_compare_paths")
    at ./assert/assert.c:105
#7 0x00007ffff7dd3109 in svn_path_compare_paths ()
   from /lib/x86_64-linux-gnu/libsvn_subr-1.so.1
--Type <RET> for more, q to quit, c to continue without paging--
#8 0x00007ffff7a49950 in msort_with_tmp (
    p=p@entry=0x7fffffffd7f0, b=b@entry=0x7ffff69f9d00,
    n=n@entry=2) at ./stdlib/qsort.c:239
#9 0x00007ffff7a49c1d in msort_with_tmp (n=2,
    b=0x7ffff69f9d00, p=0x7fffffffd7f0)
    at ./stdlib/qsort.c:201
#10 __GI___qsort_r (pbase=0x7ffff69f9d00,
    total_elems=2, size=8, cmp=<optimized out>,
    arg=<optimized out>) at ./stdlib/qsort.c:393
#11 0x000055555557621f in ?? ()
#12 0x0000555555576b09 in ?? ()
#13 0x0000555555585d0d in ?? ()
#14 0x0000555555563e9a in ?? ()
#15 0x00007ffff7a2a1ca in __libc_start_call_main (
    main=main@entry=0x555555563e10, argc=argc@entry=3,
    argv=argv@entry=0x7fffffffe338)
    at ../sysdeps/nptl/libc_start_call_main.h:58
#16 0x00007ffff7a2a28b in __libc_start_main_impl (
    main=0x555555563e10, argc=3, argv=0x7fffffffe338,
    init=<optimized out>, fini=<optimized out>,
    rtld_fini=<optimized out>, stack_end=0x7fffffffe328)
    at ../csu/libc-start.c:360
#17 0x0000555555563f15 in ?? ()
(gdb)

---
$ uname -a
Linux wrench 7.0.0-28-generic #28~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed
Jul 1 15:50:57 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
kjelderg@wrench:~/test_checkout/branches/a$ svn --versionsvn, version
1.14.3 (r1914484)
   compiled Apr 1 2024, 04:55:49 on x86_64-pc-linux-gnu

On Wed, Oct 7, 2026, 14:33 Daniel Sahlberg <da...@gmail.com>
wrote:

> Den tors 10 okt. 2024 kl 21:58 skrev Eri Kjeldergaard <kjelderg@gmail.com
> >:
> >
> > The relative path '.' is passed to is_canonical causing an assertion
> failure in is_canonical when trying to sort the conflicts.
> >
> > The minimal path to reproduce requires a conflict of at least 2 items.
> One of the conflicts should be '.'.
> >
> >
> > Steps to reproduce:
> > # create and checkout a repo
> > svnadmin create /tmp/test_repo
> > svn co file:///tmp/test_repo test_checkout
> > cd test_checkout
> >
> > # stage the conflicts
> > ## stage the skeleton
> > svn mkdir trunk branches
> > svn ci -m 'seed directories'
> > svn cp trunk branches/a
> > svn ci -m 'create branch a'
> > ## stage changes in trunk
> > echo "foo" > trunk/foo
> > svn add trunk/foo
> > svn propset svn:ignore foo trunk
> > svn ci -m 'stage trunk'
> > ## stage conflicting changes in branches/a
> > echo "bar" > branches/a/foo
> > svn add branches/a/foo
> > svn propset svn:ignore bar branches/a
> > svn ci -m 'stage branches/a'
> > ## merge
> > svn up
> > cd branches/a
> > svn merge ^/trunk
> >
> >
> > Failure message:
> > $ svn merge ^/trunk
> > --- Merging r2 through r6 into '.':
> >    C foo
> >  C   .
> > --- Recording mergeinfo for merge of r2 through r6 into '.':
> >  U  .
> > svn: ../subversion/libsvn_subr/path.c:426: svn_path_compare_paths:
> Assertion `is_canonical(path1, path1_len)` failed.
> >
> >
> >
>
> Hi Eri,
>
> I saw your request for a JIRA account but I don't think anyone has
> replied yet. I'm afraid adding this to JIRA won't do much to help
> resolving this issue since we are not really using JIRA to track
> future work.
>
> Have you had any chance to look in more detail what goes wrong? A
> backtrace or some other debugging may help a long way, a patch would
> be even better.
>
> Kind regards,
> Daniel
>