On Tue, 3 Sep 2013 18:39:04 +0200, Stefan Sperling <s...@elego.de> wrote: > Can you show us what these gdb commands print here, please? > > bt > p ancestor_is_self > p nearest_ancestor_mergeinfo > p rangelist > > Thanks!
Here is the output: Starting program: /opt/local/bin/bin/svn merge --non-interactive --dry-run http://reposrv/p1/branches/branch1/work . [Thread debugging using libthread_db enabled] Program received signal SIGSEGV, Segmentation fault. 0x00002aaaaab0e2db in filter_log_entry_with_rangelist (baton=0x7fffffff9530, log_entry=0x9c2510, pool=0x9c2498) at subversion/libsvn_client/mergeinfo.c:1399 1399 svn_merge_range_t *youngest_range = APR_ARRAY_IDX( (gdb) bt #0 0x00002aaaaab0e2db in filter_log_entry_with_rangelist (baton=0x7fffffff9530, log_entry=0x9c2510, pool=0x9c2498) at subversion/libsvn_client/mergeinfo.c:1399 #1 0x00002aaaac6d2831 in log_closed (xes=0x9d9148, baton=0x9b1440, leaving_state=2, cdata=0x0, attrs=0x9dd770, scratch_pool=0x9c2498) at subversion/libsvn_ra_serf/log.c:304 #2 0x00002aaaac6ec92b in svn_ra_serf__xml_cb_end (xmlctx=0x9b1608, raw_name=0x6bbfc0 "S:log-item") at subversion/libsvn_ra_serf/xml.c:777 #3 0x00002aaaac6eacb2 in expat_end (userData=0x9b16a8, raw_name=0x6bbfc0 "S:log-item") at subversion/libsvn_ra_serf/util.c:2541 #4 0x0000003346409e85 in ?? () from /lib64/libexpat.so.0 #5 0x000000334640ab44 in ?? () from /lib64/libexpat.so.0 #6 0x0000003346403ef1 in XML_ParseBuffer () from /lib64/libexpat.so.0 #7 0x00002aaaac6eaefb in expat_response_handler (request=0x9b3448, response=0x9c7848, baton=0x9b16a8, scratch_pool=0x9df568) at subversion/libsvn_ra_serf/util.c:2621 #8 0x00002aaaac6e9e7a in handle_response (request=0x9b3448, response=0x9c7848, handler=0x9b16d0, serf_status=0x7fffffff8e94, scratch_pool=0x9df568) at subversion/libsvn_ra_serf/util.c:2120 #9 0x00002aaaac6e9f6b in handle_response_cb (request=0x9b3448, response=0x9c7848, baton=0x9b16d0, scratch_pool=0x9df568) at subversion/libsvn_ra_serf/util.c:2153 #10 0x00002aaaac904051 in serf__process_connection () from /opt/local/bin/lib/libserf-1.so.3 #11 0x00002aaaac9023b5 in serf_event_trigger () from /opt/local/bin/lib/libserf-1.so.3 #12 0x00002aaaac90259f in serf_context_run () from /opt/local/bin/lib/libserf-1.so.3 #13 0x00002aaaac6e7387 in svn_ra_serf__context_run_wait (done=0x9b16ec, sess=0x995970, scratch_pool=0x9b13c8) at subversion/libsvn_ra_serf/util.c:817 #14 0x00002aaaac6e75aa in svn_ra_serf__context_run_one (handler=0x9b16d0, scratch_pool=0x9b13c8) at subversion/libsvn_ra_serf/util.c:888 #15 0x00002aaaac6d3385 in svn_ra_serf__get_log (ra_session=0x995948, paths=0x9e71f0, start=26778, end=29119, limit=0, discover_changed_paths=1, strict_node_history=0, include_merged_revisions=0, revprops=0x998ba0, ---Type <return> to continue, or q <return> to quit--- receiver=0x2aaaaab0dea6 <filter_log_entry_with_rangelist>, receiver_baton=0x7fffffff9530, pool=0x9b13c8) at subversion/libsvn_ra_serf/log.c:595 #16 0x00002aaaab025cb1 in svn_ra_get_log2 (session=0x995948, paths=0x9e71f0, start=26778, end=29119, limit=0, discover_changed_paths=1, strict_node_history=0, include_merged_revisions=0, revprops=0x998ba0, receiver=0x2aaaaab0dea6 <filter_log_entry_with_rangelist>, receiver_baton=0x7fffffff9530, pool=0x9b13c8) at subversion/libsvn_ra/ra_loader.c:906 #17 0x00002aaaaaaf2df4 in run_ra_get_log (revision_ranges=0x9b83f0, paths=0x9e71f0, log_segments=0x9b85d8, actual_loc=0x9b8490, ra_session=0x995948, targets=0x9e6f58, limit=0, discover_changed_paths=1, strict_node_history=0, include_merged_revisions=0, revprops=0x998ba0, real_receiver=0x2aaaaab0dea6 <filter_log_entry_with_rangelist>, real_receiver_baton=0x7fffffff9530, ctx=0x68ba70, scratch_pool=0x65a7f8) at subversion/libsvn_client/log.c:771 #18 0x00002aaaaaaf32ea in svn_client_log5 (targets=0x9e6f58, peg_revision=0x7fffffff9580, opt_rev_ranges=0x9e71a8, limit=0, discover_changed_paths=1, strict_node_history=0, include_merged_revisions=0, revprops=0x998ba0, real_receiver=0x2aaaaab0dea6 <filter_log_entry_with_rangelist>, real_receiver_baton=0x7fffffff9530, ctx=0x68ba70, pool=0x65a7f8) at subversion/libsvn_client/log.c:890 #19 0x00002aaaaab0e7c5 in logs_for_mergeinfo_rangelist ( source_url=0x9e6ec8 "http://reposrv/p1/branches/branch1/work", merge_source_fspaths=0x998bc8, filtering_merged=0, rangelist=0x9e6dc0, oldest_revs_first=1, target_mergeinfo_catalog=0x9e6f80, target_fspath=0x9e6f30 "/trunk/work", discover_changed_paths=1, revprops=0x998ba0, log_receiver=0x2aaaaab0a2b0 <operative_rev_receiver>, log_receiver_baton=0x7fffffff9a20, ctx=0x68ba70, scratch_pool=0x65a7f8) at subversion/libsvn_client/mergeinfo.c:1559 #20 0x00002aaaaab10007 in svn_client__mergeinfo_log (finding_merged=0, target_path_or_url=0x68e058 "http://reposrv/p1/trunk/work", target_peg_revision=0x7fffffff9a40, target_mergeinfo_catalog=0x7fffffff9a30, source_path_or_url=0x6957f8 "http://reposrv/p1/branches/branch1/work", source_peg_revision=0x7fffffff9a70, source_start_revision=0x7fffffff9a60, source_end_revision=0x7fffffff9a50, log_receiver=0x2aaaaab0a2b0 <operative_rev_receiver>, log_receiver_baton=0x7fffffff9a20, discover_changed_paths=1, depth=svn_depth_infinity, revprops=0x998ba0, ctx=0x68ba70, result_pool=0x65a7f8, scratch_pool=0x65a7f8) at subversion/libsvn_client/mergeinfo.c:2118 #21 0x00002aaaaab0a3c1 in short_circuit_mergeinfo_log (target_mergeinfo_cat=0x7fffffff9a30, finding_merged=0, ---Type <return> to continue, or q <return> to quit--- target_path_or_url=0x68e058 "http://reposrv/p1/trunk/work", target_peg_revision=0x7fffffff9a40, source_path_or_url=0x6957f8 "http://reposrv/p1/branches/branch1/work", source_peg_revision=0x7fffffff9a70, source_start_revision=0x7fffffff9a60, source_end_revision=0x7fffffff9a50, receiver=0x2aaaaab0a2b0 <operative_rev_receiver>, revision=0x7fffffff9a20, ctx=0x68ba70, result_pool=0x65a7f8, scratch_pool=0x65a7f8) at subversion/libsvn_client/merge.c:12061 #22 0x00002aaaaab0a62c in find_last_merged_location (base_p=0x7fffffff9b80, yca=0x6983c0, source_branch=0x68de70, target=0x68def0, ctx=0x68ba70, result_pool=0x65a7f8, scratch_pool=0x65a7f8) at subversion/libsvn_client/merge.c:12190 #23 0x00002aaaaab0a789 in find_base_on_source (base_p=0x7fffffff9b80, s_t=0x68de60, ctx=0x68ba70, result_pool=0x65a7f8, scratch_pool=0x65a7f8) at subversion/libsvn_client/merge.c:12248 #24 0x00002aaaaab0aae8 in find_automatic_merge (base_p=0x68dec0, is_reintegrate_like=0x68ded8, s_t=0x68de60, ctx=0x68ba70, result_pool=0x65a7f8, scratch_pool=0x65a7f8) at subversion/libsvn_client/merge.c:12334 #25 0x00002aaaaab0afc7 in client_find_automatic_merge (merge_p=0x7fffffff9d08, source_path_or_url=0x68cde0 "http://reposrv/p1/branches/branch1/work", source_revision=0x7fffffff9e00, target_abspath=0x68d028 "/home/mvorwerk/dev/wmerge", allow_mixed_rev=0, allow_local_mods=1, allow_switched_subtrees=1, ctx=0x68ba70, result_pool=0x65a7f8, scratch_pool=0x65a7f8) at subversion/libsvn_client/merge.c:12462 #26 0x00002aaaaab09a88 in svn_client_merge_peg5 ( source_path_or_url=0x68cde0 "http://reposrv/p1/branches/branch1/work", ranges_to_merge=0x0, source_peg_revision=0x7fffffff9e00, target_wcpath=0x68ceb0 "", depth=svn_depth_unknown, ignore_mergeinfo=0, diff_ignore_ancestry=0, force_delete=0, record_only=0, dry_run=1, allow_mixed_rev=0, merge_options=0x0, ctx=0x68ba70, pool=0x65a7f8) at subversion/libsvn_client/merge.c:11818 #27 0x0000000000418763 in run_merge (two_sources_specified=0, sourcepath1=0x68cde0 "http://reposrv/p1/branches/branch1/work", peg_revision1=..., sourcepath2=0x68cde0 "http://reposrv/p1/branches/branch1/work", targetpath=0x68ceb0 "", ranges_to_merge=0x0, first_range_start=..., first_range_end=..., opt_state=0x7fffffffa210, options=0x0, ctx=0x68ba70, scratch_pool=0x65a7f8) at subversion/svn/merge-cmd.c:108 ---Type <return> to continue, or q <return> to quit--- #28 0x0000000000419407 in svn_cl__merge (os=0x65acf0, baton=0x7fffffffa1f0, pool=0x65a7f8) at subversion/svn/merge-cmd.c:434 #29 0x0000000000428ce9 in sub_main (argc=6, argv=0x7fffffffa6e8, pool=0x65a7f8) at subversion/svn/svn.c:2878 #30 0x000000000042902d in main (argc=6, argv=0x7fffffffa6e8) at subversion/svn/svn.c:2969 (gdb) p ancestor_is_self $1 = 1 (gdb) p nearest_ancestor_mergeinfo $2 = (svn_mergeinfo_t) 0x69bcc0 (gdb) p rangelist $3 = (svn_rangelist_t *) 0x0 (gdb) > And then, please try this. It's a shot in the dark. There is an obvious > bug where the code doesn't check for nearest_ancestor_mergeinfo being > NULL even though it could be. I threw in a NULL check for rangelist > for good measure, apparently that's what you're hitting? > > Index: subversion/libsvn_client/mergeinfo.c > =================================================================== > --- subversion/libsvn_client/mergeinfo.c (revision 1519009) > +++ subversion/libsvn_client/mergeinfo.c (working copy) > @@ -1405,17 +1405,21 @@ filter_log_entry_with_rangelist(void *baton, > obviously back. If it was added or replaced it's still > around > possibly it was replaced one or more times, but it's back > now. > Regardless, LOG_ENTRY->REVISION is *not* an eligible > revision! */ > - if (ancestor_is_self /* Explicit mergeinfo on > TARGET_PATH_AFFECTED */ > + if (nearest_ancestor_mergeinfo && > + ancestor_is_self /* Explicit mergeinfo on > TARGET_PATH_AFFECTED */ > && (change->action != 'M')) > { > svn_rangelist_t *rangelist = > svn_hash_gets(nearest_ancestor_mergeinfo, path); > - svn_merge_range_t *youngest_range = APR_ARRAY_IDX( > - rangelist, rangelist->nelts - 1, svn_merge_range_t *); > + if (rangelist) > + { > + svn_merge_range_t *youngest_range = APR_ARRAY_IDX( > + rangelist, rangelist->nelts - 1, svn_merge_range_t *); > > - if (youngest_range > - && (youngest_range->end > log_entry->revision)) > - continue; > + if (youngest_range > + && (youngest_range->end > log_entry->revision)) > + continue; > + } > } > > if (nearest_ancestor_mergeinfo) I applied that patch - and it worked! No segmentation fault with this version. Matthias