Stefan Küng <tortoise...@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
http://www.uberSVN.com

Reply via email to