[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: crash when commiting

From: Philip Martin <philip.martin_at_wandisco.com>
Date: Fri, 09 Mar 2012 19:06:20 +0000

Stefan Küng <tortoisesvn_at_gmail.com> writes:

> I'm going through some crash reports sent for TSVN and I found a crash
> that happens when committing, and the wc has some incomplete entries:
> libsvn_wc/node.c, svn_wc__internal_get_origin().
> SVN_ERR(svn_wc__db_scan_addition(&status, &op_root_abspath, NULL,
> NULL, NULL, &original_repos_relpath,
> repos_root_url,
> repos_uuid, revision, NULL, NULL,
> db, local_abspath,
> result_pool, scratch_pool));
> if (status == svn_wc__db_status_added)
> {
> if (is_copy)
> *is_copy = FALSE;
> return SVN_NO_ERROR; /* Local addition */
> }
> *repos_relpath = svn_relpath_join(
> original_repos_relpath,
> svn_dirent_skip_ancestor(op_root_abspath,
> local_abspath),
> result_pool);
> when the status is svn_wc__db_status_incomplete, the
> original_repos_relpath can be NULL, and then the svn_relpath_join()
> crashes because of a null-pointer access.

scan_addition implies the node must be added, and for that to be
incomplete it must be the result of an interrupted wc-to-wc copy.

$ svn st wc
A + wc/X
! wc/X/B/C
! wc/X/B/f

In that state a simple commit doesn't trigger a bug, but then it doesn't
call svn_wc__internal_get_origin either. I see commit_util.c has calls
to svn_wc__node_get_orig, which calls svn_wc__internal_get_origin, so I
suppose that must be how it gets called, but I don't know what sort of
commit to run to see the bug. How does TortoiseSVN commit such a tree?

uberSVN: Apache Subversion Made Easy
Received on 2012-03-09 20:07:01 CET

This is an archived mail posted to the Subversion Dev mailing list.