Git in next is broken
From: Nicolas Pitre <nico@fluxnic.net>
Date: 2016-06-15 22:47:43
Simply issuing a "git fetch" in my copy of git.git makes glibc complain
with this:
*** glibc detected *** git: corrupted double-linked list: 0x0000000000974180 ***
The gdb backtrace is:
(gdb) bt
#0 0x0000003c76632f05 in raise () from /lib64/libc.so.6
#1 0x0000003c76634a73 in abort () from /lib64/libc.so.6
#2 0x0000003c76672438 in __libc_message () from /lib64/libc.so.6
#3 0x0000003c76677ec8 in malloc_printerr () from /lib64/libc.so.6
#4 0x0000003c7667a23e in _int_free () from /lib64/libc.so.6
#5 0x0000003c7667a486 in free () from /lib64/libc.so.6
#6 0x0000000000493f3f in ref_remove_duplicates (ref_map=0x7562b0)
at remote.c:756
#7 0x0000000000424afc in get_ref_map () at builtin-fetch.c:165
#8 do_fetch () at builtin-fetch.c:644
#9 cmd_fetch (argc=<value optimized out>, argv=0x7fffffffe6a0,
prefix=<value optimized out>) at builtin-fetch.c:754
#10 0x0000000000403d83 in run_builtin () at git.c:251
#11 handle_internal_command (argc=1, argv=0x7fffffffe6a0) at git.c:396
#12 0x0000000000403f2d in run_argv () at git.c:438
#13 main (argc=1, argv=0x7fffffffe6a0) at git.c:509
Bisection reveals the following culprit:
commit 73cf0822b2a4ffa7ad559d1f0772e39718fc7776
Author: Julian Phillips [off-list ref]
Date: Sun Oct 25 21:28:11 2009 +0000
remote: Make ref_remove_duplicates faster for large numbers of refs
The ref_remove_duplicates function was very slow at dealing with very
large numbers of refs. This is because it was using a linear search
through all remaining refs to find any duplicates of the current ref.
Rewriting it to use a string list to keep track of which refs have
already been seen and removing duplicates when they are found is much
more efficient.
Signed-off-by: Julian Phillips [off-list ref]
Signed-off-by: Junio C Hamano [off-list ref]
Reverting that commit from next does indeed fix the problem.
Note that this problem doesn't show up with all repositoryes.
Nicolas