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

Re: Assert in svn-1.7-alpha2 svn_client_merge3

From: Hyrum K Wright <hyrum_at_hyrumwright.org>
Date: Wed, 6 Jul 2011 09:53:41 -0500

Can you reproduce this with a non-optimized build of Subversion? Many
of the function arguments in the stack trace appear to be optimized
out, making it less than useful.

-Hyrum

On Sat, Jul 2, 2011 at 11:13 AM, Barry Scott <barry_at_barrys-emacs.org> wrote:
> I'm testing 1.7-alpha2 against pysvn using Fedora 15 and I'm seeing an assert
> when calling svn_client_merge3. This has all works against 1.6.
>
> Is this a bug in svn or pysvn calling svn?
>
> details below
>
> Barry
>
>
> Here is what was printed:
>
> Info: pysvn command: merge --revision 16:17 file:///home/barry/wc/svn/pysvn/Extension/Tests/testroot-01/root/repos/trunk/test /home/barry/wc/svn/pysvn/Extension/Tests/testroot-01/wc3/test-branch
> svn: E235000: In file 'subversion/libsvn_subr/mergeinfo.c' line 801: assertion failed (IS_VALID_FORWARD_RANGE(first))
>
> And gdb output of the stack, the call site and the variables passed into svn_client_merge3.
>
> (gdb) bt
> #0  0x00000039fba36415 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
> #1  0x00000039fba37d2b in abort () at abort.c:92
> #2  0x00007f0c5d74769e in svn_error_abort_on_malfunction (can_return=<optimized out>, file=<optimized out>,
>    line=<optimized out>, expr=<optimized out>) at subversion/libsvn_subr/error.c:648
> #3  0x00007f0c5d7519d3 in range_contains (consider_inheritance=0, second=0x7fffd5b3bb40, first=<optimized out>)
>    at subversion/libsvn_subr/mergeinfo.c:801
> #4  rangelist_intersect_or_remove (output=0x2169490, rangelist1=0x216d220, rangelist2=0x216b3a0, do_remove=0,
>    consider_inheritance=0, pool=0x216b6b8) at subversion/libsvn_subr/mergeinfo.c:959
> #5  0x00007f0c5f31ffd5 in adjust_deleted_subtree_ranges (scratch_pool=0x216b6b8, result_pool=0x20f4488, ctx=0x20b7470,
>    ra_session=0x212fa08, primary_url=
>    0x216b7e8 "file:///home/barry/wc/svn/pysvn/Extension/Tests/testroot-01/root/repos/trunk/test/file-merge-1.txt",
>    revision2=17, revision1=16, mergeinfo_path=<optimized out>, parent=0x20f5578, child=0x2169470)
>    at subversion/libsvn_client/merge.c:2908
> #6  fix_deleted_subtree_ranges (scratch_pool=0x216d6c8, result_pool=0x20f4488, merge_b=0x7fffd5b3bf20, notify_b=
>    0x7fffd5b3bff0, ra_session=0x212fa08, revision2=17, url2=
>    0x20caa60 "file:///home/barry/wc/svn/pysvn/Extension/Tests/testroot-01/root/repos/trunk/test", revision1=16, url1=
>    0x20ca9d8 "file:///home/barry/wc/svn/pysvn/Extension/Tests/testroot-01/root/repos/trunk/test")
>    at subversion/libsvn_client/merge.c:3140
> #7  do_directory_merge (result_catalog=0x0, url1=<optimized out>, revision1=<optimized out>, url2=<optimized out>,
>    revision2=<optimized out>, target_abspath=0x212fa08 "`p\243^\f\177", depth=svn_depth_files,
>    squelch_mergeinfo_notifications=0, abort_on_conflicts=0, notify_b=0x7fffd5b3bff0, merge_b=0x7fffd5b3bf20, scratch_pool=
>    0x20f4488) at subversion/libsvn_client/merge.c:8246
> #8  0x00007f0c5f3222c7 in do_merge (modified_subtrees=0x0, result_catalog=0x0, merge_sources=<optimized out>,
>    target_abspath=0x20c9c78 "/home/barry/wc/svn/pysvn/Extension/Tests/testroot-01/wc3/test-branch",
>    sources_ancestral=<optimized out>, sources_related=1, same_repos=1, ignore_ancestry=0, force=0, dry_run=1,
>    record_only=0, record_only_paths=0x0, reintegrate_merge=0, squelch_mergeinfo_notifications=0, depth=svn_depth_files,
>    merge_options=0x0, use_sleep=0x7fffd5b3c268, ctx=0x20b7470, result_pool=0x20c9468, scratch_pool=0x20c9468)
>    at subversion/libsvn_client/merge.c:8766
> #9  0x00007f0c5f344fcd in merge_locked (scratch_pool=0x20c9468, ctx=0x20b7470, merge_options=0x0, allow_mixed_rev=34382280,
>    dry_run=1, record_only=0, force=0, ignore_ancestry=0, depth=svn_depth_files, target_abspath=
>    0x20c9c78 "/home/barry/wc/svn/pysvn/Extension/Tests/testroot-01/wc3/test-branch", revision2=<optimized out>,
>    source2=<optimized out>, revision1=<optimized out>, source1=<optimized out>) at subversion/libsvn_client/merge.c:9374
> #10 merge_cb (baton=<optimized out>, result_pool=<optimized out>, scratch_pool=0x20c9468)
>    at subversion/libsvn_client/merge.c:9411
> #11 0x00007f0c5f345398 in svn_client_merge4 (source1=
>    0x20d5148 "file:///home/barry/wc/svn/pysvn/Extension/Tests/testroot-01/root/repos/trunk/test", revision1=
> ---Type <return> to continue, or q <return> to quit---
>    0x7fffd5b3c540, source2=0x20d51c8 "file:///home/barry/wc/svn/pysvn/Extension/Tests/testroot-01/root/repos/trunk/test",
>    revision2=0x7fffd5b3c520, target_wcpath=<optimized out>, depth=svn_depth_files, ignore_ancestry=0, force=0,
>    record_only=0, dry_run=1, allow_mixed_rev=1, merge_options=0x0, ctx=0x20b7470, pool=0x20c9468)
>    at subversion/libsvn_client/merge.c:9483
> #12 0x00007f0c5f3334e1 in svn_client_merge3 (source1=<optimized out>, revision1=<optimized out>, source2=<optimized out>,
>    revision2=<optimized out>, target_wcpath=<optimized out>, depth=<optimized out>, ignore_ancestry=0, force=0,
>    record_only=0, dry_run=1, merge_options=0x0, ctx=0x20b7470, pool=0x20c9468)
>    at subversion/libsvn_client/deprecated.c:1425
> #13 0x00007f0c5f6f0f41 in pysvn_client::cmd_merge (this=0x20b7160, a_args=..., a_kws=...) at pysvn_client_cmd_merge.cpp:124
>
> 108     #if defined( PYSVN_HAS_CLIENT_MERGE3 )
> 109             svn_error_t *error = svn_client_merge3
> 110                 (
> 111                 norm_path1.c_str(),
> 112                 &revision1,
> 113                 norm_path2.c_str(),
> 114                 &revision2,
> (gdb)
> 115                 norm_local_path.c_str(),
> 116                 depth,
> 117                 !notice_ancestry,
> 118                 force,
> 119                 record_only,
> 120                 dry_run,
> 121                 merge_options,
> 122                 m_context,
> 123                 pool
> 124                 );
> (gdb) p norm_path1
> $1 = "file:///home/barry/wc/svn/pysvn/Extension/Tests/testroot-01/root/repos/trunk/test"
> (gdb) p revision1
> $2 = {kind = svn_opt_revision_number, value = {number = 16, date = 16}}
> (gdb) p norm_path2
> $3 = "file:///home/barry/wc/svn/pysvn/Extension/Tests/testroot-01/root/repos/trunk/test"
> (gdb) p revision2
> $4 = {kind = svn_opt_revision_number, value = {number = 17, date = 17}}
> (gdb) p norm_local_path
> $5 = "/home/barry/wc/svn/pysvn/Extension/Tests/testroot-01/wc3/test-branch"
> (gdb) p depth
> $6 = svn_depth_files
> (gdb) p notice_ancestry
> $7 = true
> (gdb) p force
> $8 = false
> (gdb) p record_only
> $9 = false
> (gdb) p dry_run
> $10 = true
> (gdb) p merge_options
> $11 = (apr_array_header_t *) 0x0
> (gdb) p m_context
> $12 = {<SvnContext> = {_vptr.SvnContext = 0x7f0c5f97adf0, m_pool = 0x20b73f8, m_context = 0x20b7470, m_config_dir =
>    0x20b68a0 "/home/barry/wc/svn/pysvn/Extension/Tests/testroot-01/configdir"}, m_pyfn_GetLogin = {_vptr.Object =
>    0x7f0c5f97a050, p = <instancemethod at remote 0x7f0c6649b280>}, m_pyfn_Notify = {_vptr.Object = 0x7f0c5f97a050, p =
>    <instancemethod at remote 0x7f0c5f9a4780>}, m_pyfn_Progress = {_vptr.Object = 0x7f0c5f97a050, p = None},
>  m_pyfn_ConflictResolver = {_vptr.Object = 0x7f0c5f97a050, p = <instancemethod at remote 0x7f0c5f9a4820>},
>  m_pyfn_Cancel = {_vptr.Object = 0x7f0c5f97a050, p = <instancemethod at remote 0x7f0c5fb58050>}, m_pyfn_GetLogMessage = {
>    _vptr.Object = 0x7f0c5f97a050, p = <instancemethod at remote 0x7f0c5f9a4730>}, m_pyfn_SslServerPrompt = {_vptr.Object =
>    0x7f0c5f97a050, p = <instancemethod at remote 0x7f0c5fb580f0>}, m_pyfn_SslServerTrustPrompt = {_vptr.Object =
>    0x7f0c5f97a050, p = <instancemethod at remote 0x7f0c5fb58140>}, m_pyfn_SslClientCertPrompt = {_vptr.Object =
>    0x7f0c5f97a050, p = <instancemethod at remote 0x7f0c5fb580a0>}, m_pyfn_SslClientCertPwPrompt = {_vptr.Object =
>    0x7f0c5f97a050, p = <instancemethod at remote 0x7f0c5f9a47d0>}, m_default_username = "", m_default_password = "",
>  m_permission = 0x7fffd5b3c480, m_error_message = "", m_log_message = ""}
> (gdb) p pool
> $13 = {m_pool = 0x20c9468}
> (gdb)
>
>
Received on 2011-07-06 16:54:20 CEST

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