Hi,

From a crash report dump sent for TSVN for an update the attached stack trace happened.

libsvn_wc\props.c, svn_wc__merge_props()
      to_val = incoming_change->value
        ? svn_string_dup(incoming_change->value, result_pool) : NULL;
....
      if (! from_val)  /* adding a new property */
        SVN_ERR(apply_single_prop_add(state, &conflict_remains,
                                      db, local_abspath,
                                      left_version, right_version,
                                      is_dir, actual_props,
                                      propname, base_val, to_val,
                                      conflict_func, conflict_baton,
                                      dry_run, result_pool, iterpool));
and then in apply_single_prop_add():
...
      if (svn_string_compare(working_val, new_val))
crashes, because new_val is NULL.

the property is "svn:mergeinfo".

Could this happen if someone manually removes the svn:mergeinfo property and then the next update (from another working copy) gets the to_val as NULL?

Stefan

--
       ___
  oo  // \\      "De Chelonian Mobile"
 (_,\/ \_/ \     TortoiseSVN
   \ \_/_\_/>    The coolest Interface to (Sub)Version Control
   /_/   \_\     http://tortoisesvn.net
        libsvn_tsvn32.dll!svn_string_compare(const svn_string_t * 
str1=0x02b70558, const svn_string_t * str2=0x00000000)  Line 220 + 0x4 bytes  C
        libsvn_tsvn32.dll!apply_single_prop_add(svn_wc_notify_state_t * 
state=0x01ddf2c0, int * conflict_remains=0x01ddf228, svn_wc__db_t * 
db=0x100e03e2, const char * local_abspath=0x02e7d048, const 
svn_wc_conflict_version_t * left_version=0x00000000, const 
svn_wc_conflict_version_t * right_version=0x00000000, int is_dir=0, apr_hash_t 
* working_props=0x02a46668, const char * propname=0x02a1f420, const 
svn_string_t * base_val=0x00000000, const svn_string_t * new_val=0x00000000, 
svn_error_t * (svn_wc_conflict_result_t * *, const 
svn_wc_conflict_description2_t *, void *, apr_pool_t *, apr_pool_t *)* 
conflict_func=0x005196ab, void * conflict_baton=0x0012ee70, int dry_run=0, 
apr_pool_t * result_pool=0x02a3dc80, apr_pool_t * scratch_pool=0x02ac6b40)  
Line 1071 + 0xb bytes       C
        libsvn_tsvn32.dll!svn_wc__merge_props(svn_skel_t * * 
work_items=0x01ddf2e4, svn_wc_notify_state_t * state=0x01ddf2c0, apr_hash_t * * 
new_pristine_props=0x01ddf2b0, apr_hash_t * * new_actual_props=0x01ddf2ac, 
svn_wc__db_t * db=0x018f39e0, const char * local_abspath=0x02e7d048, 
svn_wc__db_kind_t kind=svn_wc__db_kind_file, const svn_wc_conflict_version_t * 
left_version=0x00000000, const svn_wc_conflict_version_t * 
right_version=0x00000000, apr_hash_t * server_baseprops=0x02b70f50, apr_hash_t 
* pristine_props=0x02b70f50, apr_hash_t * actual_props=0x02a46668, const 
apr_array_header_t * propchanges=0x02b70ff8, int base_merge=1, int dry_run=0, 
svn_error_t * (svn_wc_conflict_result_t * *, const 
svn_wc_conflict_description2_t *, void *, apr_pool_t *, apr_pool_t *)* 
conflict_func=0x005196ab, void * conflict_baton=0x0012ee70, svn_error_t * (void 
*)* cancel_func=0x0051961b, void * cancel_baton=0x0012ee70, apr_pool_t * 
result_pool=0x02a3dc80, apr_pool_t * scratch_pool=0x02a3dc80)  Line 1621 + 0x4a 
bytes   C
        libsvn_tsvn32.dll!close_file(void * file_baton=0x02a46668, const char * 
expected_md5_digest=0x00000000, apr_pool_t * pool=0x02a3dc80)  Line 683 + 0x4d 
bytes    C
        libsvn_tsvn32.dll!close_file(void * file_baton=0x02a3dcc0, const char * 
text_checksum=0x02a46300, apr_pool_t * pool=0x02a3dc80)  Line 235 + 0x15 bytes  
C
        libsvn_tsvn32.dll!end_element(void * userdata=0x02e7d270, int 
state=240, const char * nspace=0x029d7388, const char * elt_name=0x02cb3da0)  
Line 2056 + 0x14 bytes      C
        libsvn_tsvn32.dll!wrapper_endelm_cb(void * baton=0x02e84528, int 
state=240, const char * nspace=0x029d7388, const char * name=0x02cb3da0)  Line 
1137 + 0x16 bytes       C
        libsvn_tsvn32.dll!end_element(void * userdata=0x02f2b880, const char * 
name=0x02cfd688)  Line 391 + 0x16 bytes  C
        libaprutil_tsvn32.dll!doContent(XML_ParserStruct * parser=0x02eb68c0, 
int startTagLevel=0, const encoding * enc=0x02cf24fa, const char * 
s=0x02cf24f8, const char * end=0x02cf2540, const char * * nextPtr=0x02eb68d8)  
Line 2236 + 0xd bytes   C
        libaprutil_tsvn32.dll!contentProcessor(XML_ParserStruct * 
parser=0x02eb68c0, const char * start=0x02cf1aef, const char * end=0x02cf2540, 
const char * * endPtr=0x02eb68d8)  Line 1816 + 0x23 bytes      C
        libaprutil_tsvn32.dll!doProlog(XML_ParserStruct * parser=0x02eb6801, 
const encoding * enc=0x6ee8b470, const char * s=0x02cf1aef, const char * 
end=0x02cf2540, int tok=2, const char * next=0x02cf1aef, const char * * 
nextPtr=0x02eb68d8)  Line 3541 + 0x1f bytes       C
        libaprutil_tsvn32.dll!prologInitProcessor(XML_ParserStruct * 
parser=0x02cf1aee, const char * s=0x02cf1ac8, const char * end=0x02cf2540, 
const char * * nextPtr=0x02eb68d8)  Line 3132 + 0x3b bytes      C
        libaprutil_tsvn32.dll!XML_ParseBuffer(XML_ParserStruct * 
parser=0x02eb68c0, int len=2680, int isFinal=0)  Line 1482 + 0x38 bytes        C
        libaprutil_tsvn32.dll!XML_Parse(XML_ParserStruct * parser=0x02eb68c0, 
const char * s=0x02f20e08, int len=2680, int isFinal=0)  Line 1469 + 0xc bytes  
  C
        libsvn_tsvn32.dll!ne_xml_parse(ne_xml_parser_s * p=0x02f2b880, const 
char * block=0x02f20e08, unsigned int len=2680)  Line 588 + 0xd bytes      C
        libsvn_tsvn32.dll!cancellation_callback(void * userdata=0x02a1eff0, 
const char * block=0x02f20e08, unsigned int len=2680)  Line 1241 + 0x12 bytes   
    C
        libsvn_tsvn32.dll!gz_reader(void * ud=0x02f303b0, const char * 
buf=0x02f20e08, unsigned int len=2680)  Line 304 + 0x15 bytes    C
        libsvn_tsvn32.dll!ne_discard_response(ne_request_s * req=0x00000a78)  
Line 1389 + 0x87 bytes    C
        libsvn_tsvn32.dll!ne_request_dispatch(ne_request_s * req=0x02f20de0)  
Line 1401 + 0xa bytes     C
        libsvn_tsvn32.dll!svn_ra_neon__request_dispatch(int * 
code_p=0x00000000, svn_ra_neon__request_t * req=0x1022c638, apr_hash_t * 
extra_headers=0x1022c648, const char * body=0x00000000, int okay_1=200, int 
okay_2=0, apr_pool_t * pool=0x02e7ba40)  Line 1535   C
        libsvn_tsvn32.dll!parsed_request(svn_ra_neon__request_t * 
req=0x02e844a8, svn_ra_neon__session_t * ras=0x02e95678, const char * 
method=0x1022c61c, const char * url=0x02e95ca8, const char * body=0x00000000, 
apr_file_t * body_file=0x02a328b8, void (ne_xml_parser_s *, void *)* 
set_parser=0x00000000, svn_error_t * (int *, void *, int, const char *, const 
char *, const char * *)* startelm_cb=0x1005df20, svn_error_t * (void *, int, 
const char *, unsigned int)* cdata_cb=0x1005ec20, svn_error_t * (void *, int, 
const char *, const char *)* endelm_cb=0x1005ed50, void * baton=0x02e7d270, 
apr_hash_t * extra_headers=0x02a1ee80, int * status_code=0x00000000, int 
spool_response=0, apr_pool_t * pool=0x02e7ba40)  Line 1323 + 0x6c bytes        C
        libsvn_tsvn32.dll!svn_ra_neon__parsed_request(svn_ra_neon__session_t * 
sess=0x02e95678, const char * method=0x1022c61c, const char * url=0x02e95ca8, 
const char * body=0x00000000, apr_file_t * body_file=0x02a328b8, void 
(ne_xml_parser_s *, void *)* set_parser=0x00000000, svn_error_t * (int *, void 
*, int, const char *, const char *, const char * *)* startelm_cb=0x1005df20, 
svn_error_t * (void *, int, const char *, unsigned int)* cdata_cb=0x1005ec20, 
svn_error_t * (void *, int, const char *, const char *)* endelm_cb=0x1005ed50, 
void * baton=0x02e7d270, apr_hash_t * extra_headers=0x02a1ee80, int * 
status_code=0x00000000, int spool_response=0, apr_pool_t * pool=0x02e7ba40)  
Line 1378        C
        libsvn_tsvn32.dll!reporter_finish_report(void * 
report_baton=0x02e7d270, apr_pool_t * pool=0x02e7ba40)  Line 2420 + 0x32 bytes  
C
        libsvn_tsvn32.dll!svn_wc__crawl_file_external(svn_wc_context_t * 
wc_ctx=0x00005f25, const char * local_abspath=0x0195b8c8, const 
svn_ra_reporter3_t * reporter=0x1022bdd0, void * report_baton=0x02e7d270, int 
restore_files=1, int use_commit_times=0, svn_error_t * (void *)* 
cancel_func=0x0051961b, void * cancel_baton=0x0012ee70, void (void *, const 
svn_wc_notify_t *, apr_pool_t *)* notify_func=0x005197fb, void * 
notify_baton=0x0012ee70, apr_pool_t * scratch_pool=0x02e7ba40)  Line 993 + 0x7 
bytes       C
        libsvn_tsvn32.dll!switch_file_external(const char * 
local_abspath=0x0195b8c8, const char * url=0x0195bbf0, const svn_opt_revision_t 
* peg_revision=0x01972160, const svn_opt_revision_t * revision=0x01972150, 
const char * def_dir_abspath=0x028a8268, svn_ra_session_t * 
ra_session=0x02e955d8, const char * ra_session_url=0x10014971, long 
ra_revnum=268519793, const char * repos_root_url=0x0195cd00, int * 
timestamp_sleep=0x10014971, svn_client_ctx_t * ctx=0x00000000, apr_pool_t * 
scratch_pool=0x0195b888)  Line 482 + 0x2c bytes   C
        libsvn_tsvn32.dll!handle_external_item_change(const 
external_change_baton_t * eb=0x00000000, const char * 
parent_dir_abspath=0x028a8268, const char * parent_dir_url=0x019721d0, const 
char * local_abspath=0x0195b8c8, const char * old_defining_abspath=0x028a95e8, 
const svn_wc_external_item2_t * new_item=0x00000000, apr_pool_t * 
scratch_pool=0x0195b888)  Line 960 + 0x26 bytes C
        libsvn_tsvn32.dll!handle_externals_change(const external_change_baton_t 
* eb=0x01ddf7c8, const char * local_abspath=0x028a8268, const char * 
new_desc_text=0x028a8290, apr_hash_t * old_externals=0x028a9510, svn_depth_t 
ambient_depth=svn_depth_infinity, svn_depth_t requested_depth=-2, apr_pool_t * 
scratch_pool=0x00000000)  Line 1060 + 0x19 bytes       C
        libsvn_tsvn32.dll!svn_client__handle_externals(apr_hash_t * 
externals_new=0x028410a8, apr_hash_t * ambient_depths=0x02841110, const char * 
repos_root_url=0x028a8290, const char * target_abspath=0x01940270, svn_depth_t 
requested_depth=-2, int * timestamp_sleep=0x01ddf934, svn_client_ctx_t * 
ctx=0x018f3970, apr_pool_t * scratch_pool=0x019401e0)  Line 1136 + 0x1d bytes   
     C
        libsvn_tsvn32.dll!update_internal(long * result_rev=0x01ddf930, const 
char * local_abspath=0x01940270, const char * anchor_abspath=0x01940490, const 
svn_opt_revision_t * revision=0x01ddf8d4, svn_depth_t depth=-2, int 
depth_is_sticky=0, int ignore_externals=0, int allow_unver_obstructions=1, int 
adds_as_modification=1, int * timestamp_sleep=0x00000000, int notify_summary=1, 
svn_client_ctx_t * ctx=0x00005f85, apr_pool_t * pool=0x019401e0)  Line 432 + 
0x24 bytes C
        libsvn_tsvn32.dll!svn_client__update_internal(long * 
result_rev=0x01ddf930, const char * local_abspath=0x01940270, const 
svn_opt_revision_t * revision=0x0012f208, svn_depth_t depth=-2, int 
depth_is_sticky=0, int ignore_externals=0, int allow_unver_obstructions=1, int 
adds_as_modification=1, int make_parents=1, int innerupdate=0, int * 
timestamp_sleep=0x01ddf934, svn_client_ctx_t * ctx=0x018f3970, apr_pool_t * 
pool=0x019401e0)  Line 545 + 0x32 bytes    C
        libsvn_tsvn32.dll!svn_client_update4(apr_array_header_t * * 
result_revs=0x00000000, const apr_array_header_t * paths=0x00000000, const 
svn_opt_revision_t * revision=0x0012f208, svn_depth_t depth=-2, int 
depth_is_sticky=0, int ignore_externals=0, int allow_unver_obstructions=1, int 
adds_as_modification=1, int make_parents=1, svn_client_ctx_t * ctx=0x018f3970, 
apr_pool_t * pool=0x0192cc00)  Line 605 + 0x3a bytes   C

Reply via email to