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 <[email protected]> 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) > >

