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

crash in svn_client_info3 for tree conflicted item

From: Stefan Küng <tortoisesvn_at_gmail.com>
Date: Thu, 13 Oct 2011 18:41:58 +0200

Hi,

Several crash reports for TSVN show the following stack trace:

uri_escape(const char * path=0x00000000, const char * table=0x1024e130,
apr_pool_t * pool=0x01a8b9b8) Line 890 + 0xb bytes C

svn_path_url_add_component2(const char * url=0x01ab6928, const char *
component=0x00000000, apr_pool_t * pool=0x01a8b9b8) Line 1061 C

build_info_for_node(svn_wc__info2_t * * info=0x0012ec08, svn_wc__db_t *
db=0x01a8ba68, const char * local_abspath=0x01acaeb8, svn_node_kind_t
kind=svn_node_dir, apr_pool_t * result_pool=0x01a8b9b8, apr_pool_t *
scratch_pool=0x01a8b9b8) Line 258 + 0xf bytes C

info_found_node_callback(const char * local_abspath=0x01acaeb8,
svn_node_kind_t kind=svn_node_dir, void * walk_baton=0x0012ec6c,
apr_pool_t * scratch_pool=0x01a8b9b8) Line 354 + 0x24 bytes C

svn_wc__internal_walk_children(svn_wc__db_t * db=0x01a8ba68, const char
* local_abspath=0x01acaeb8, int show_hidden=1, const apr_array_header_t
* changelist_filter=0x00000000, svn_error_t * (const char *,
svn_node_kind_t, void *, apr_pool_t *)* walk_callback=0x100d6620, void *
walk_baton=0x0012ec6c, svn_depth_t walk_depth=svn_depth_empty,
svn_error_t * (void *)* cancel_func=0x00513ad3, void *
cancel_baton=0x0012ef90, apr_pool_t * scratch_pool=0x01a8b9b8) Line 707
+ 0xa bytes C

svn_wc__get_info(svn_wc_context_t * wc_ctx=0x00000000, const char *
local_abspath=0x01acaeb8, svn_depth_t depth=svn_depth_empty, int
fetch_excluded=1, int fetch_actual_only=1, const apr_array_header_t *
changelist_filter=0x00000000, svn_error_t * (void *, const char *, const
svn_wc__info2_t *, apr_pool_t *)* receiver=0x100151b0, void *
receiver_baton=0x0012ecec, svn_error_t * (void *)*
cancel_func=0x00513ad3, void * cancel_baton=0x0012ef90, apr_pool_t *
scratch_pool=0x01a8b9b8) Line 474 + 0x2e bytes C

svn_client_info3(const char * abspath_or_url=0x01acaeb8, const
svn_opt_revision_t * peg_revision=0x0012eddc, const svn_opt_revision_t *
revision=0x0012edf4, svn_depth_t depth=svn_depth_empty, int
fetch_excluded=1, int fetch_actual_only=1, const apr_array_header_t *
changelists=0x00000000, svn_error_t * (void *, const char *, const
svn_client_info2_t *, apr_pool_t *)* receiver=0x00513d32, void *
receiver_baton=0x0012ef90, svn_client_ctx_t * ctx=0x01a8b9f8, apr_pool_t
* pool=0x01a8b9b8) Line 301 + 0x41 bytes C

from what I can see, the problem is in libsvn_wc\info.c,
build_info_for_node().
Since the path is in some kind of tree conflict (don't know what kind
exactly, sorry), the status (svn_wc__db_status_t) is
svn_wc__db_status_incomplete, and with that status and that
repos_relpath is NULL, the call to svn_path_url_add_component2 results
in NULL passed as the second parameter. The comment says "Just a BASE
node. We have all the information we need" is apparently wrong: the
repos_relpath is not set because the status indicates it's incomplete.

Stefan

-- 
        ___
   oo  // \\      "De Chelonian Mobile"
  (_,\/ \_/ \     TortoiseSVN
    \ \_/_\_/>    The coolest Interface to (Sub)Version Control
    /_/   \_\     http://tortoisesvn.net
Received on 2011-10-13 18:42:38 CEST

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