You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Ramkumar Ramachandra <ar...@gmail.com> on 2010/07/26 18:32:07 UTC

[BUG] svn diff segfault

Hi,

It's a little late here, and I don't have the patience the debug this
segmentation fault right now. Here's the backtrace from a simple `svn
diff`: if it helps, revision-0.dump had just been `svn mv`ed from
revision0.dump. I think it has something to do with the file's
svn:mime-type being application/octet-stream?

-- Ram

#0  0x00007ffff6bd93d4 in find_entry (ht=0x0, key=0x7ffff7951a7c, klen=13, val=0x0)
    at /home/artagnon/svn/src/apr-1.4.2/tables/apr_hash.c:260
        hep = 0x0
        he = 0x649d20
        hash = 0
#1  0x00007ffff6bd9712 in apr_hash_get (ht=0x0, key=0x7ffff7951a7c, klen=13) at /home/artagnon/svn/src/apr-1.4.2/tables/apr_hash.c:330
        he = 0x7fffffffd890
#2  0x00007ffff78e3fec in get_prop_mimetype (props=0x0) at subversion/libsvn_wc/diff.c:506
        mimetype_val = 0x649d20
#3  0x00007ffff78e4d00 in file_diff (db=0x6db4f8, path=0x713368 "svnrdump_tests_data/revision-0.dump", pool=0x713148)
    at subversion/libsvn_wc/diff.c:754
        translated = 0x0
        baseprops = 0x0
        working_mimetype = 0x7131c0 "/home/artagnon/svn/svn-trunk/subversion/tests/cmdline/svnrdump_tests_data/revision-0.dump"
        modified = 0
        base_mimetype = 0x649d20 "\002"
        workingprops = 0x0
        propchanges = 0x0
        eb = 0x6cff20
        textbase = 0x713f48 "/home/artagnon/svn/svn-trunk/subversion/tests/cmdline/svnrdump_tests_data/.svn/pristine/335a6306b5bf1fc799b
6f4976513b7b3c1189bd5"
        empty_file = 0x6e1bf8 "/tmp/svn-64lEba"
        replaced = 0
        status = svn_wc__db_status_copied
        original_repos_relpath = 0x7137d8 "subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/revision0.dump"
        revision = -1
        revert_base_revnum = 0
        have_base = 0
        base_status = 4153677978
        local_abspath = 0x7134e8 "/home/artagnon/svn/svn-trunk/subversion/tests/cmdline/svnrdump_tests_data/revision-0.dump"
#4  0x00007ffff78e54c2 in directory_elements_diff (db=0x6db4f8) at subversion/libsvn_wc/diff.c:893
        svn_err__temp = 0x6cff20
        subdir_baton = 0x100000000
        hidden = 0
        kind = svn_wc__db_kind_file
        name = 0x6db8a8 "revision-0.dump"
        child_abspath = 0x7131c0 "/home/artagnon/svn/svn-trunk/subversion/tests/cmdline/svnrdump_tests_data/revision-0.dump"
        path = 0x713368 "svnrdump_tests_data/revision-0.dump"
        children = 0x6db8d0
        i = 0
        in_anchor_not_target = 0
        iterpool = 0x713148
        eb = 0x6cff20
#5  0x00007ffff78e5585 in directory_elements_diff (db=0x6d0110) at subversion/libsvn_wc/diff.c:921
        svn_err__temp = 0x0
        depth_below_here = svn_depth_unknown
        subdir_baton = 0x6db4f8
        hidden = 0
        kind = svn_wc__db_kind_dir
        name = 0x6d0b68 "svnrdump_tests_data"
        child_abspath = 0x6da4f0 "/home/artagnon/svn/svn-trunk/subversion/tests/cmdline/svnrdump_tests_data"
        path = 0x6db4e0 "svnrdump_tests_data"
        children = 0x6d0488
        i = 59
        in_anchor_not_target = 0
        iterpool = 0x6da478
        eb = 0x6cff20
#6  0x00007ffff78e86d4 in svn_wc_diff6 (wc_ctx=0x649d08, target_path=0x677860 "", callbacks=0x7fffffffdeb0, 
    callback_baton=0x7fffffffdef0, depth=svn_depth_unknown, ignore_ancestry=1, show_copies_as_adds=0, changelists=0x649518, 
    cancel_func=0x41294f <svn_cl__check_cancel>, cancel_baton=0x0, pool=0x6777e8) at subversion/libsvn_wc/diff.c:1925
        svn_err__temp = 0xfffffffe
        eb = 0x6cff20
        db = 0x6d0110
        target = 0x7ffff7951b05 ""
        target_abspath = 0x6cfee8 "/home/artagnon/svn/svn-trunk/subversion/tests/cmdline"
        anchor_path = 0x677860 ""
        kind = svn_wc__db_kind_dir
#7  0x00007ffff7b968dc in diff_wc_wc (path1=0x677860 "", revision1=0x7fffffffe378, path2=0x677868 "", revision2=0x7fffffffe388, 
    depth=svn_depth_unknown, ignore_ancestry=1, show_copies_as_adds=0, changelists=0x649518, callbacks=0x7fffffffdeb0, 
    callback_baton=0x7fffffffdef0, ctx=0x649c50, pool=0x6777e8) at subversion/libsvn_client/diff.c:1543
        svn_err__temp = 0x7fffffffdf70
        abspath1 = 0x677b50 "/home/artagnon/svn/svn-trunk/subversion/tests/cmdline"
        err = 0x0
#8  0x00007ffff7b977f2 in do_diff (diff_param=0x7fffffffdf70, callbacks=0x7fffffffdeb0, callback_baton=0x7fffffffdef0, ctx=0x649c50, 
    pool=0x6777e8) at subversion/libsvn_client/diff.c:1818
        svn_err__temp = 0x6777e8
        diff_paths = {is_repos1 = 0, is_repos2 = 0}
#9  0x00007ffff7b980a1 in svn_client_diff5 (options=0x0, path1=0x677860 "", revision1=0x7fffffffe378, path2=0x677868 "", 
    revision2=0x7fffffffe388, relative_to_dir=0x0, depth=svn_depth_unknown, ignore_ancestry=1, no_diff_deleted=0, 
    show_copies_as_adds=0, ignore_content_type=0, use_git_diff_format=0, header_encoding=0x1 <Address 0x1 out of bounds>, 
    outfile=0x67f878, errfile=0x67f8e8, changelists=0x649518, ctx=0x649c50, pool=0x6777e8) at subversion/libsvn_client/diff.c:2073
        diff_params = {path1 = 0x677860 "", revision1 = 0x7fffffffe378, path2 = 0x677868 "", revision2 = 0x7fffffffe388, 
          peg_revision = 0x7fffffffdea0, depth = svn_depth_unknown, ignore_ancestry = 1, no_diff_deleted = 0, show_copies_as_adds = 0, 
          changelists = 0x649518}
        diff_cmd_baton = {diff_cmd = 0x0, options = {for_internal = 0x6778c0, for_external = {argv = 0x6778c0, argc = 8}}, 
          pool = 0x6777e8, outfile = 0x67f878, errfile = 0x67f8e8, header_encoding = 0x1 <Address 0x1 out of bounds>, 
          orig_path_1 = 0x677860 "", orig_path_2 = 0x677868 "", revnum1 = 979365, revnum2 = -1, force_binary = 0, force_empty = 0, 
          relative_to_dir = 0x0, use_git_diff_format = 0, wc_ctx = 0x649d08, visited_paths = 0x677958}
        diff_callbacks = {file_changed = 0x7ffff7b9527a <diff_file_changed>, file_added = 0x7ffff7b953dd <diff_file_added>, 
          file_deleted = 0x7ffff7b9574f <diff_file_deleted_with_diff>, dir_added = 0x7ffff7b958b9 <diff_dir_added>, 
          dir_deleted = 0x7ffff7b958fe <diff_dir_deleted>, dir_props_changed = 0x7ffff7b94333 <diff_props_changed>, 
          dir_opened = 0x7ffff7b95943 <diff_dir_opened>, dir_closed = 0x7ffff7b95988 <diff_dir_closed>}
        peg_revision = {kind = svn_opt_revision_unspecified, value = {number = 0, date = 0}}
#10 0x000000000040c8ba in svn_cl__diff (os=0x6494b8, baton=0x7fffffffe350, pool=0x649268) at subversion/svn/diff-cmd.c:340
        svn_err__temp = 0x28
        path = 0x67f9e8 ""
        target1 = 0x677860 ""
        target2 = 0x677868 ""
        opt_state = 0x7fffffffe370
        ctx = 0x649c50
        options = 0x0
        targets = 0x67f9a0
        outfile = 0x67f878
        errfile = 0x67f8e8
        status = 0
        old_target = 0x424b9c ""
        new_target = 0x424b9c ""
        iterpool = 0x6777e8
        pegged_diff = 0
        i = 0
        summarize_func = 0x40bac5 <summarize_regular>
#11 0x000000000041569b in main (argc=2, argv=0x7fffffffe6d8) at subversion/svn/main.c:2331
        err = 0x0
        allocator = 0x649180
        pool = 0x649268
        opt_id = 32767
        os = 0x6494b8
        opt_state = {revision_ranges = 0x649490, start_revision = {kind = svn_opt_revision_base, value = {number = 0, date = 0}}, 
          end_revision = {kind = svn_opt_revision_working, value = {number = 0, date = 0}}, used_change_arg = 0, 
          used_revision_arg = 0, limit = 0, depth = svn_depth_unknown, no_unlock = 0, message = 0x0, ancestor_path = 0x0, force = 0, 
          force_log = 0, incremental = 0, quiet = 0, non_interactive = 0, version = 0, verbose = 0, update = 0, strict = 0, 
          filedata = 0x0, encoding = 0x0, help = 0, auth_username = 0x0, auth_password = 0x0, extensions = 0x0, targets = 0x0, 
          xml = 0, no_ignore = 0, no_auth_cache = 0, no_diff_deleted = 0, show_copies_as_adds = 0, notice_ancestry = 0, 
          ignore_ancestry = 0, ignore_externals = 0, stop_on_copy = 0, dry_run = 0, revprop = 0, diff_cmd = 0x0, merge_cmd = 0x0, 
          editor_cmd = 0x0, record_only = 0, old_target = 0x0, new_target = 0x0, relocate = 0, config_dir = 0x0, config_options = 0x0, 
          autoprops = 0, no_autoprops = 0, native_eol = 0x0, summarize = 0, remove = 0, changelists = 0x649518, changelist = 0x0, 
          keep_changelists = 0, keep_local = 0, all_revprops = 0, no_revprops = 0, revprop_table = 0x0, parents = 0, 
          use_merge_history = 0, accept_which = svn_cl__accept_unspecified, show_revs = svn_cl__show_revs_merged, 
          set_depth = svn_depth_unknown, reintegrate = 0, trust_server_cert = 0, strip_count = 0, ignore_keywords = 0, 
          reverse_diff = 0, ignore_whitespace = 0, show_diff = 0, internal_diff

Re: [BUG] svn diff segfault

Posted by Daniel Shahaf <d....@daniel.shahaf.name>.
Ramkumar Ramachandra wrote on Tue, Jul 27, 2010 at 09:12:34 +0530:
> Daniel Shahaf writes:
> > I can't reproduce it using trunk@{yesterday}:
> 
> That's because Bert fixed it in r979416 :)

Bert's fix was committed about an hour before I made my @{yesterday} remark, so
the build I was using would not have included that fix.

Re: [BUG] svn diff segfault

Posted by Ramkumar Ramachandra <ar...@gmail.com>.
Hi Daniel,

Daniel Shahaf writes:
> Ramkumar Ramachandra wrote on Tue, Jul 27, 2010 at 00:02:07 +0530:
> > Hi,
> > 
> > It's a little late here, and I don't have the patience the debug this
> > segmentation fault right now. Here's the backtrace from a simple `svn
> > diff`: if it helps, revision-0.dump had just been `svn mv`ed from
> > revision0.dump. I think it has something to do with the file's
> > svn:mime-type being application/octet-stream?
> > 
> 
> I can't reproduce it using trunk@{yesterday}:

That's because Bert fixed it in r979416 :)

-- Ram

Re: [BUG] svn diff segfault

Posted by Daniel Shahaf <d....@daniel.shahaf.name>.
Ramkumar Ramachandra wrote on Tue, Jul 27, 2010 at 00:02:07 +0530:
> Hi,
> 
> It's a little late here, and I don't have the patience the debug this
> segmentation fault right now. Here's the backtrace from a simple `svn
> diff`: if it helps, revision-0.dump had just been `svn mv`ed from
> revision0.dump. I think it has something to do with the file's
> svn:mime-type being application/octet-stream?
> 

I can't reproduce it using trunk@{yesterday}:

[[[
1:sandbox/wc1% $svn ps svn:mime-type application/octet-stream iota 
svn: warning: '/tmp/daniel/sandbox/wc1/iota' is not under version control
0:sandbox/wc1% ls
branches  tags  trunk
0:sandbox/wc1% cd trunk 
0:wc1/trunk% $svn ps svn:mime-type application/octet-stream iota 
property 'svn:mime-type' set on 'iota'
0:wc1/trunk% $svn ci iota -mfoo
Sending        iota

Committed revision 2.
0:wc1/trunk% $svn mv iota iota2
A         iota2
D         iota
0:wc1/trunk% $svn di
Index: iota
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
0:wc1/trunk% 
]]]

Can you give a reproduction script?

Daniel
(or add a regression test...)

> -- Ram
> 
> #0  0x00007ffff6bd93d4 in find_entry (ht=0x0, key=0x7ffff7951a7c, klen=13, val=0x0)
>     at /home/artagnon/svn/src/apr-1.4.2/tables/apr_hash.c:260
>         hep = 0x0
>         he = 0x649d20
>         hash = 0
> #1  0x00007ffff6bd9712 in apr_hash_get (ht=0x0, key=0x7ffff7951a7c, klen=13) at /home/artagnon/svn/src/apr-1.4.2/tables/apr_hash.c:330
>         he = 0x7fffffffd890
> #2  0x00007ffff78e3fec in get_prop_mimetype (props=0x0) at subversion/libsvn_wc/diff.c:506
>         mimetype_val = 0x649d20
> #3  0x00007ffff78e4d00 in file_diff (db=0x6db4f8, path=0x713368 "svnrdump_tests_data/revision-0.dump", pool=0x713148)
>     at subversion/libsvn_wc/diff.c:754
>         translated = 0x0
>         baseprops = 0x0
>         working_mimetype = 0x7131c0 "/home/artagnon/svn/svn-trunk/subversion/tests/cmdline/svnrdump_tests_data/revision-0.dump"
>         modified = 0
>         base_mimetype = 0x649d20 "\002"
>         workingprops = 0x0
>         propchanges = 0x0
>         eb = 0x6cff20
>         textbase = 0x713f48 "/home/artagnon/svn/svn-trunk/subversion/tests/cmdline/svnrdump_tests_data/.svn/pristine/335a6306b5bf1fc799b
> 6f4976513b7b3c1189bd5"
>         empty_file = 0x6e1bf8 "/tmp/svn-64lEba"
>         replaced = 0
>         status = svn_wc__db_status_copied
>         original_repos_relpath = 0x7137d8 "subversion/trunk/subversion/tests/cmdline/svnrdump_tests_data/revision0.dump"
>         revision = -1
>         revert_base_revnum = 0
>         have_base = 0
>         base_status = 4153677978
>         local_abspath = 0x7134e8 "/home/artagnon/svn/svn-trunk/subversion/tests/cmdline/svnrdump_tests_data/revision-0.dump"
> #4  0x00007ffff78e54c2 in directory_elements_diff (db=0x6db4f8) at subversion/libsvn_wc/diff.c:893
>         svn_err__temp = 0x6cff20
>         subdir_baton = 0x100000000
>         hidden = 0
>         kind = svn_wc__db_kind_file
>         name = 0x6db8a8 "revision-0.dump"
>         child_abspath = 0x7131c0 "/home/artagnon/svn/svn-trunk/subversion/tests/cmdline/svnrdump_tests_data/revision-0.dump"
>         path = 0x713368 "svnrdump_tests_data/revision-0.dump"
>         children = 0x6db8d0
>         i = 0
>         in_anchor_not_target = 0
>         iterpool = 0x713148
>         eb = 0x6cff20
> #5  0x00007ffff78e5585 in directory_elements_diff (db=0x6d0110) at subversion/libsvn_wc/diff.c:921
>         svn_err__temp = 0x0
>         depth_below_here = svn_depth_unknown
>         subdir_baton = 0x6db4f8
>         hidden = 0
>         kind = svn_wc__db_kind_dir
>         name = 0x6d0b68 "svnrdump_tests_data"
>         child_abspath = 0x6da4f0 "/home/artagnon/svn/svn-trunk/subversion/tests/cmdline/svnrdump_tests_data"
>         path = 0x6db4e0 "svnrdump_tests_data"
>         children = 0x6d0488
>         i = 59
>         in_anchor_not_target = 0
>         iterpool = 0x6da478
>         eb = 0x6cff20
> #6  0x00007ffff78e86d4 in svn_wc_diff6 (wc_ctx=0x649d08, target_path=0x677860 "", callbacks=0x7fffffffdeb0, 
>     callback_baton=0x7fffffffdef0, depth=svn_depth_unknown, ignore_ancestry=1, show_copies_as_adds=0, changelists=0x649518, 
>     cancel_func=0x41294f <svn_cl__check_cancel>, cancel_baton=0x0, pool=0x6777e8) at subversion/libsvn_wc/diff.c:1925
>         svn_err__temp = 0xfffffffe
>         eb = 0x6cff20
>         db = 0x6d0110
>         target = 0x7ffff7951b05 ""
>         target_abspath = 0x6cfee8 "/home/artagnon/svn/svn-trunk/subversion/tests/cmdline"
>         anchor_path = 0x677860 ""
>         kind = svn_wc__db_kind_dir
> #7  0x00007ffff7b968dc in diff_wc_wc (path1=0x677860 "", revision1=0x7fffffffe378, path2=0x677868 "", revision2=0x7fffffffe388, 
>     depth=svn_depth_unknown, ignore_ancestry=1, show_copies_as_adds=0, changelists=0x649518, callbacks=0x7fffffffdeb0, 
>     callback_baton=0x7fffffffdef0, ctx=0x649c50, pool=0x6777e8) at subversion/libsvn_client/diff.c:1543
>         svn_err__temp = 0x7fffffffdf70
>         abspath1 = 0x677b50 "/home/artagnon/svn/svn-trunk/subversion/tests/cmdline"
>         err = 0x0
> #8  0x00007ffff7b977f2 in do_diff (diff_param=0x7fffffffdf70, callbacks=0x7fffffffdeb0, callback_baton=0x7fffffffdef0, ctx=0x649c50, 
>     pool=0x6777e8) at subversion/libsvn_client/diff.c:1818
>         svn_err__temp = 0x6777e8
>         diff_paths = {is_repos1 = 0, is_repos2 = 0}
> #9  0x00007ffff7b980a1 in svn_client_diff5 (options=0x0, path1=0x677860 "", revision1=0x7fffffffe378, path2=0x677868 "", 
>     revision2=0x7fffffffe388, relative_to_dir=0x0, depth=svn_depth_unknown, ignore_ancestry=1, no_diff_deleted=0, 
>     show_copies_as_adds=0, ignore_content_type=0, use_git_diff_format=0, header_encoding=0x1 <Address 0x1 out of bounds>, 
>     outfile=0x67f878, errfile=0x67f8e8, changelists=0x649518, ctx=0x649c50, pool=0x6777e8) at subversion/libsvn_client/diff.c:2073
>         diff_params = {path1 = 0x677860 "", revision1 = 0x7fffffffe378, path2 = 0x677868 "", revision2 = 0x7fffffffe388, 
>           peg_revision = 0x7fffffffdea0, depth = svn_depth_unknown, ignore_ancestry = 1, no_diff_deleted = 0, show_copies_as_adds = 0, 
>           changelists = 0x649518}
>         diff_cmd_baton = {diff_cmd = 0x0, options = {for_internal = 0x6778c0, for_external = {argv = 0x6778c0, argc = 8}}, 
>           pool = 0x6777e8, outfile = 0x67f878, errfile = 0x67f8e8, header_encoding = 0x1 <Address 0x1 out of bounds>, 
>           orig_path_1 = 0x677860 "", orig_path_2 = 0x677868 "", revnum1 = 979365, revnum2 = -1, force_binary = 0, force_empty = 0, 
>           relative_to_dir = 0x0, use_git_diff_format = 0, wc_ctx = 0x649d08, visited_paths = 0x677958}
>         diff_callbacks = {file_changed = 0x7ffff7b9527a <diff_file_changed>, file_added = 0x7ffff7b953dd <diff_file_added>, 
>           file_deleted = 0x7ffff7b9574f <diff_file_deleted_with_diff>, dir_added = 0x7ffff7b958b9 <diff_dir_added>, 
>           dir_deleted = 0x7ffff7b958fe <diff_dir_deleted>, dir_props_changed = 0x7ffff7b94333 <diff_props_changed>, 
>           dir_opened = 0x7ffff7b95943 <diff_dir_opened>, dir_closed = 0x7ffff7b95988 <diff_dir_closed>}
>         peg_revision = {kind = svn_opt_revision_unspecified, value = {number = 0, date = 0}}
> #10 0x000000000040c8ba in svn_cl__diff (os=0x6494b8, baton=0x7fffffffe350, pool=0x649268) at subversion/svn/diff-cmd.c:340
>         svn_err__temp = 0x28
>         path = 0x67f9e8 ""
>         target1 = 0x677860 ""
>         target2 = 0x677868 ""
>         opt_state = 0x7fffffffe370
>         ctx = 0x649c50
>         options = 0x0
>         targets = 0x67f9a0
>         outfile = 0x67f878
>         errfile = 0x67f8e8
>         status = 0
>         old_target = 0x424b9c ""
>         new_target = 0x424b9c ""
>         iterpool = 0x6777e8
>         pegged_diff = 0
>         i = 0
>         summarize_func = 0x40bac5 <summarize_regular>
> #11 0x000000000041569b in main (argc=2, argv=0x7fffffffe6d8) at subversion/svn/main.c:2331
>         err = 0x0
>         allocator = 0x649180
>         pool = 0x649268
>         opt_id = 32767
>         os = 0x6494b8
>         opt_state = {revision_ranges = 0x649490, start_revision = {kind = svn_opt_revision_base, value = {number = 0, date = 0}}, 
>           end_revision = {kind = svn_opt_revision_working, value = {number = 0, date = 0}}, used_change_arg = 0, 
>           used_revision_arg = 0, limit = 0, depth = svn_depth_unknown, no_unlock = 0, message = 0x0, ancestor_path = 0x0, force = 0, 
>           force_log = 0, incremental = 0, quiet = 0, non_interactive = 0, version = 0, verbose = 0, update = 0, strict = 0, 
>           filedata = 0x0, encoding = 0x0, help = 0, auth_username = 0x0, auth_password = 0x0, extensions = 0x0, targets = 0x0, 
>           xml = 0, no_ignore = 0, no_auth_cache = 0, no_diff_deleted = 0, show_copies_as_adds = 0, notice_ancestry = 0, 
>           ignore_ancestry = 0, ignore_externals = 0, stop_on_copy = 0, dry_run = 0, revprop = 0, diff_cmd = 0x0, merge_cmd = 0x0, 
>           editor_cmd = 0x0, record_only = 0, old_target = 0x0, new_target = 0x0, relocate = 0, config_dir = 0x0, config_options = 0x0, 
>           autoprops = 0, no_autoprops = 0, native_eol = 0x0, summarize = 0, remove = 0, changelists = 0x649518, changelist = 0x0, 
>           keep_changelists = 0, keep_local = 0, all_revprops = 0, no_revprops = 0, revprop_table = 0x0, parents = 0, 
>           use_merge_history = 0, accept_which = svn_cl__accept_unspecified, show_revs = svn_cl__show_revs_merged, 
>           set_depth = svn_depth_unknown, reintegrate = 0, trust_server_cert = 0, strip_count = 0, ignore_keywords = 0, 
>           reverse_diff = 0, ignore_whitespace = 0, show_diff = 0, internal_diff