Lieven Govaerts <[email protected]> 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

