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

Re: multiple crashes

From: Stefan Küng <tortoisesvn_at_gmail.com>
Date: Fri, 25 May 2012 15:43:01 +0200

On 25.05.2012 10:54, Philip Martin wrote:
> Stefan Küng<tortoisesvn_at_gmail.com> writes:
>
>> libsvn_tsvn32!svn_relpath_join+0x10
>> libsvn_tsvn32!svn_wc__internal_get_origin+0x1b2
>> libsvn_tsvn32!svn_client_commit5+0x14d3
>> libsvn_tsvn32!svn_client__harvest_committables+0x26a
>> libsvn_tsvn32!svn_client_commit5+0x2e4
>>
>> here the 'status' after svn_wc__db_scan_addition() is
>> svn_wc__db_status_incomplete which might be an indication why
>> original_repos_relpath is NULL and then causes the access violation in
>> svn_relpath_join().
>
> One way to get incomplete with status add is to interrupt a wc-to-wc
> copy. That gives things like:
>
> $ svn st wc
> A + wc/X
> ! wc/X/B
> ! wc/X/f
>
> But those have original_repos_relpath and the commit doesn't crash.
>
> Is there some other way of getting incomplete with add? Perhaps an
> interrupted merge?

No idea how the wc got into this state. As I said: this comes from a
crash dump. All I can see is the stack trace and some of the variables
passed to the functions in the stack trace.

>
> The documentation for svn_wc__node_get_origin says that for an added
> node (meaning not copied) the function returns NULL. This indicates
> that callers are probably not going to crash if we return NULL for the
> incomplete case:
>
> svn diff ../src-1.7/subversion/libsvn_wc/node.c
> Index: ../src-1.7/subversion/libsvn_wc/node.c
> ===================================================================
> --- ../src-1.7/subversion/libsvn_wc/node.c (revision 1342275)
> +++ ../src-1.7/subversion/libsvn_wc/node.c (working copy)
> @@ -1407,7 +1407,10 @@
> return SVN_NO_ERROR; /* Local addition */
> }
>
> - *repos_relpath = svn_relpath_join(
> + if (!original_repos_relpath)
> + *repos_relpath = NULL;
> + else
> + *repos_relpath = svn_relpath_join(
> original_repos_relpath,
> svn_dirent_skip_ancestor(op_root_abspath,
> local_abspath),
>
> I'd still like to be able to reproduce it.
>
>>
>> **********
>>
>> libsvn_tsvn32!svn_relpath_join+0x10
>> libsvn_tsvn32!svn_wc__internal_get_origin+0x1b2
>> libsvn_tsvn32!svn_client_diff_summarize_dup+0x56c
>> libsvn_tsvn32!svn_client_export5+0x1bb
>>
>> no idea why here original_repos_relpath is NULL though. Maybe you have
>> more luck analyzing that crash dump.
>
> Does this mean you cannot determine status in the same way you
> determined status above?

Status is 0 here (normal). That's why I don't know how
original_repos_relpath could be NULL.

Stefan

-- 
        ___
   oo  // \\      "De Chelonian Mobile"
  (_,\/ \_/ \     TortoiseSVN
    \ \_/_\_/>    The coolest Interface to (Sub)Version Control
    /_/   \_\     http://tortoisesvn.net
Received on 2012-05-25 15:43:42 CEST

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