Subject: Re: [PATCH 11/16] rev-list: add bitmap mode to speed up lists

From: Thomas Rast <[email-masked]>
Date: Wed, 26 Jun 2013 16:13:59 -0700

Vicent Martí <[email-masked]> writes:

> I'm afraid I cannot reproduce the segfault locally (assuming you're
> performing the rev-list on the git/git repository). Could you please
> send me more information, and a core dump if possible?

Sure, but isn't the core dump useless if you don't have the same
executable?  And since I'm building "custom" git, you won't have that.

Here's a semi-full backtrace (I left out the spammy output in the
outermost frames).  Some variables in #2 and #3 seem to have gone off
the rails.

#0  0x00007ffff72b06fb in __memset_sse2 () from /lib64/libc.so.6
No symbol table info available.
#1  0x000000000054c31c in bitmap_set (self=0x89c360, pos=18446744072278122040) at ewah/bitmap.c:46
        old_size = 7666
        block = 288230376129345656
#2  0x00000000004e6c70 in add_to_include_set (data=0x7fffffffcd00, sha1=0x85c014 "\230\062˝M\311i\373\372\317\321\370\224\017\313\336\301\213\271\060", bitmap_pos=-1431429576) at pack-bitmap.c:428
        hash_pos = 512
#3  0x00000000004e6cd6 in should_include (commit=0x85c010, _data=0x7fffffffcd00) at pack-bitmap.c:443
        data = 0x7fffffffcd00
        bitmap_pos = -1431429576
#4  0x000000000050cf1d in add_parents_to_list (revs=0x7fffffffce30, commit=0x85c010, list=0x7fffffffce30, cache_ptr=0x0) at revision.c:784
        parent = 0x88c260
        left_flag = 32767
        cached_base = 0x0
#5  0x0000000000512b66 in get_revision_1 (revs=0x7fffffffce30) at revision.c:2857
        entry = 0x8f9ce0
        commit = 0x85c010
#6  0x0000000000512dcf in get_revision_internal (revs=0x7fffffffce30) at revision.c:2964
        c = 0x0
        l = 0x1000
#7  0x0000000000512fe1 in get_revision (revs=0x7fffffffce30) at revision.c:3040
        c = 0xb92608
        reversed = 0x89c360
#8  0x00000000004d2a24 in traverse_commit_list (revs=0x7fffffffce30, show_commit=0x4e6b72 <show_commit>, show_object=0x4e6afa <show_object>, data=0x89c360) at list-objects.c:179
        i = -1
        commit = 0xb92608
        base = {
          alloc = 4097, 
          len = 0, 
          buf = 0x87bbe0 ""
        }
#9  0x00000000004e6fa4 in find_objects (revs=0x7fffffffce30, roots=0x0, seen=0x85b760) at pack-bitmap.c:549
        incdata = {
          base = 0x89c360, 
          seen = 0x85b760
        }
        base = 0x89c360
        needs_walk = true
        not_mapped = 0x8f9dc0
#10 0x00000000004e747b in prepare_bitmap_walk (revs=0x7fffffffce30, result_size=0x0) at pack-bitmap.c:679
        i = 2
        pending_nr = 2
        pending_alloc = 64
        pending_e = 0x853e10
        wants = 0x8545b0
        haves = 0x854820
        wants_bitmap = 0x0
        haves_bitmap = 0x85b760
#11 0x0000000000474bb3 in cmd_rev_list (argc=2, argv=0x7fffffffd6e8, prefix=0x0) at builtin/rev-list.c:356
#12 0x0000000000405820 in run_builtin (p=0x7c3ef8 <commands.20770+2040>, argc=4, argv=0x7fffffffd6e8) at git.c:291
#13 0x00000000004059b3 in handle_internal_command (argc=4, argv=0x7fffffffd6e8) at git.c:454
#14 0x0000000000405b87 in main (argc=4, av=0x7fffffffd6e8) at git.c:544

This is with a version of your series that you can find at

  https://github.com/trast/git.git vm/ewah

I am'd your patches on top of Junio's master at the time, except for the
parts to the Makefile that did not apply, which I fixed up manually.

-- 
Thomas Rast
trast@{inf,student}.ethz.ch