On Sun, Dec 5, 2021 at 12:55 PM James McCoy <[email protected]> wrote:
>
> On Sun, Dec 05, 2021 at 12:41:30PM -0500, Nathan Hartman wrote:
> > It's not dumping core on mine. I would like to debug this properly but
> > am running into various nonsense. For example, I haven't figured out
> > how to run it under gdb since svn is being called through the libtool
> > script;
>
> "libtool exec gdb ./subversion/svn ..." will run svn with the
> environment setup properly.
Perfect. That's the clue I needed. Thanks, James.
At diff_dir_added() at libsvn_client/conflicts.c:7570 (in current
trunk, r1895609) we are attempting to concat some path components
with:
copyfrom_url = apr_pstrcat(scratch_pool, b->repos_root_url, "/",
right_source->repos_relpath, SVN_VA_NULL);
However, right_source->repos_relpath is an empty string, so we end up
with b->repos_root_url plus a trailing slash, causing the path to
become non-canonical.
The fix might be as simple as checking for that and not calling
apr_pstrcat(), but I would like to dig a little more before jumping to
conclusions.
I was hoping this would give some insight to the non-canonical path
assertions we hear about every so often; I'm sure this one has bitten
before...
Cheers,
Nathan
P.S., I invoked gdb with:
$ libtool exec gdb -tui -args /path/to/subversion/svn/svn merge ^/trunk
Note: At first I thought Emacs wouldn't run it through libtool with
M-x gdb because it complained that I didn't give '-i=mi' even though I
did and displayed everything garbled; but it turns out I forgot -args:
M-x gdb -> libtool exec gdb -i=mi -args /path/to/subversion/svn/svn
merge ^/trunk