Lieven Govaerts <svnlgo_at_mobsol.be> writes:
> You mean ra_serf, not serf. I've triggered a build on the Mac buildbot
> with ra_serf to see if it has the same problem, cause it's the first
> time I see these errors.
>
> On what platform are you building?
64-bit Linux (Debian/Lenny).
I can reproduce as follows:
$ rm -rf repo
$ svnadmin create repo
$ svn mkdir -mm http://localhost/repo/A
$ svn copy -mm http://localhost/repo/A http://localhost/repo/B
lt-svn: ../src-1.6/subversion/libsvn_subr/path.c:955: svn_path_url_add_component2: Assertion `svn_path_is_canonical(url, pool)' failed.
Aborted
Here's a bit of a gdb session:
Breakpoint 1, get_version_url (checked_in_url=0x1d48f80, session=0x1cd0a28,
conn=0x1cd7dc0, relpath=0x7f654a2fa8da "", base_revision=1,
parent_vsn_url=0x0, pool=0x1d48ee8)
at ../src-1.6/subversion/libsvn_ra_serf/commit.c:486
486 SVN_ERR(svn_ra_serf__get_baseline_info(&bc_url, &bc_relpath,
(gdb) s
svn_ra_serf__get_baseline_info (bc_url=0x7fffe0877b80,
bc_relative=0x7fffe0877b78, session=0x1cd0a28, conn=0x1cd7dc0,
url=0x1cd7c90 "/repo", revision=1, latest_revnum=0x0, pool=0x1d48ee8)
at ../src-1.6/subversion/libsvn_ra_serf/property.c:938
938 apr_hash_t *props = apr_hash_make(pool);
(gdb) n
941 if (! url)
(gdb)
946 if (! conn)
(gdb)
949 SVN_ERR(svn_ra_serf__discover_root(&vcc_url, &relative_url,
(gdb)
952 if (revision != SVN_INVALID_REVNUM)
(gdb) p vcc_url
$1 = 0x1cc48f0 "/repo/!svn/vcc/default"
(gdb) n
954 SVN_ERR(svn_ra_serf__retrieve_props(props, session, conn,
(gdb)
957 basecoll_url = svn_ra_serf__get_ver_prop(props, vcc_url, revision,
(gdb)
981 if (!basecoll_url)
(gdb) p basecoll_url
$2 = 0x1cd89b0 "/repo/!svn/bc/1/"
(gdb) fin
Run till exit from #0 svn_ra_serf__get_baseline_info (bc_url=0x7fff68746460,
bc_relative=0x7fff68746458, session=0x1c24a28, conn=0x1c2bdc0,
url=0x1c2bc90 "/repo", revision=1, latest_revnum=0x0, pool=0x1c9cee8)
at ../src-1.6/subversion/libsvn_ra_serf/property.c:988
0x00007fefc1379e60 in get_version_url (checked_in_url=0x1c9cf80,
session=0x1c24a28, conn=0x1c2bdc0, relpath=0x7fefc13938da "",
base_revision=1, parent_vsn_url=0x0, pool=0x1c9cee8)
at ../src-1.6/subversion/libsvn_ra_serf/commit.c:486
486 SVN_ERR(svn_ra_serf__get_baseline_info(&bc_url, &bc_relpath,
Value returned is $3 = (svn_error_t *) 0x0
(gdb) n
490 propfind_url = svn_path_url_add_component2(bc_url, bc_relpath, pool);
(gdb) p bc_url
$4 = 0x1c2c9b0 "/repo/!svn/bc/1/"
(gdb) n
lt-svn: ../src-1.6/subversion/libsvn_subr/path.c:955: svn_path_url_add_component2: Assertion `svn_path_is_canonical(url, pool)' failed.
Program received signal SIGABRT, Aborted.
0x0000003e68431ed5 in raise () from /lib/libc.so.6
Using wireshark I see that the basecoll_url value is exactly what the
server sends over the wire:
PROPFIND /repo/!svn/bln/1 HTTP/1.1
Transfer-Encoding: chunked
Depth: 0
DAV: http://subversion.tigris.org/xmlns/dav/svn/depth,http://subversion.tigris.org/xmlns/dav/svn/mergeinfo,http://subversion.tigris.org/xmlns/dav/svn/log-revprops
Content-Type: text/xml
User-Agent: SVN/1.6.8 (dev build) serf/0.3.0
Host: localhost:8888
94
<?xml version="1.0" encoding="utf-8"?><propfind xmlns="DAV:"><prop><baseline-collection xmlns="DAV:"/><version-name xmlns="DAV:"/></prop></propfind>
0
HTTP/1.1 207 Multi-Status
Date: Wed, 13 Jan 2010 21:05:55 GMT
Server: Apache/2.2.9 (Debian) mod_ssl/2.2.9 OpenSSL/0.9.8g DAV/2 SVN/1.7.0-dev
Content-Length: 441
Content-Type: text/xml; charset="utf-8"
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:D="DAV:" xmlns:ns0="DAV:">
<D:response xmlns:lp1="DAV:" xmlns:lp2="http://subversion.tigris.org/xmlns/dav/">
<D:href>/repo/!svn/bln/1</D:href>
<D:propstat>
<D:prop>
<lp1:baseline-collection><D:href>/repo/!svn/bc/1/</D:href></lp1:baseline-collection>
<lp1:version-name>1</lp1:version-name>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>
--
Philip
Received on 2010-01-13 22:19:20 CET