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 <[email protected]>
wrote:

> Den tors 10 okt. 2024 kl 21:58 skrev Eri Kjeldergaard <[email protected]
> >:
> >
> > 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
>

Reply via email to