Robin: i wouldn't spend time investigating this for now. i'm logging this report so it doesn't get lost. take the attached tarball and run: while :; do rm -rf repack-dir tar xf ~/repack-dir.tar.bz2 (cd repack-dir; git repack -a -d -q) || break done eventually it'll crash like so: *** glibc detected *** git: double free or corruption (!prev): 0xf4af4fa0 *** ======= Backtrace: ========= /libx32/libc.so.6(+0x734b1)[0xf6b7f4b1] /libx32/libc.so.6(cfree+0x67)[0xf6b834f7] git[0x481dc5] git[0x449e5f] git[0x44a599] /libx32/libpthread.so.0(+0x7aac)[0xf6e98aac] /libx32/libc.so.6(clone+0x6d)[0xf6be477d] ======= Memory map: ======== 00400000-0053d000 r-xp 00000000 08:32 5795654 /usr/libexec/git-core/git 0073d000-0073e000 r--p 0013d000 08:32 5795654 /usr/libexec/git-core/git 0073e000-00743000 rw-p 0013e000 08:32 5795654 /usr/libexec/git-core/git 00743000-0078d000 rw-p 00000000 00:00 0 025ff000-026e9000 rw-p 00000000 00:00 0 [heap] f43ea000-f43ff000 r-xp 00000000 08:32 3698311 /libx32/libgcc_s.so.1 f43ff000-f45fe000 ---p 00015000 08:32 3698311 /libx32/libgcc_s.so.1 f45fe000-f45ff000 r--p 00014000 08:32 3698311 /libx32/libgcc_s.so.1 f45ff000-f4600000 rw-p 00015000 08:32 3698311 /libx32/libgcc_s.so.1 f4600000-f4671000 rw-p 00000000 00:00 0 f4671000-f4700000 ---p 00000000 00:00 0 f4800000-f48e6000 rw-p 00000000 00:00 0 f48e6000-f4900000 ---p 00000000 00:00 0 f4a00000-f4afd000 rw-p 00000000 00:00 0 f4afd000-f4b00000 ---p 00000000 00:00 0 f4b08000-f4b09000 ---p 00000000 00:00 0 f4b09000-f5309000 rw-p 00000000 00:00 0 f5309000-f530a000 ---p 00000000 00:00 0 f530a000-f5b0a000 rw-p 00000000 00:00 0 f5b0a000-f5b0b000 ---p 00000000 00:00 0 f5b0b000-f630b000 rw-p 00000000 00:00 0 f630b000-f630c000 ---p 00000000 00:00 0 f630c000-f6b0c000 rw-p 00000000 00:00 0 f6b0c000-f6c8b000 r-xp 00000000 08:32 3886607 /libx32/libc-2.14.1.so f6c8b000-f6e8b000 ---p 0017f000 08:32 3886607 /libx32/libc-2.14.1.so f6e8b000-f6e8d000 r--p 0017f000 08:32 3886607 /libx32/libc-2.14.1.so f6e8d000-f6e8e000 rw-p 00181000 08:32 3886607 /libx32/libc-2.14.1.so f6e8e000-f6e91000 rw-p 00000000 00:00 0 f6e91000-f6ea7000 r-xp 00000000 08:32 3886535 /libx32/libpthread-2.14.1.so f6ea7000-f70a6000 ---p 00016000 08:32 3886535 /libx32/libpthread-2.14.1.so f70a6000-f70a7000 r--p 00015000 08:32 3886535 /libx32/libpthread-2.14.1.so f70a7000-f70a8000 rw-p 00016000 08:32 3886535 /libx32/libpthread-2.14.1.so f70a8000-f70aa000 rw-p 00000000 00:00 0 f70aa000-f70be000 r-xp 00000000 08:32 3886562 /libx32/libz.so.1.2.5.1 f70be000-f72be000 ---p 00014000 08:32 3886562 /libx32/libz.so.1.2.5.1 f72be000-f72bf000 r--p 00014000 08:32 3886562 /libx32/libz.so.1.2.5.1 f72bf000-f72c0000 rw-p 00015000 08:32 3886562 /libx32/libz.so.1.2.5.1 f72c0000-f731b000 r-xp 00000000 08:32 3886613 /libx32/libpcre.so.0.0.1 f731b000-f751a000 ---p 0005b000 08:32 3886613 /libx32/libpcre.so.0.0.1 f751a000-f751b000 r--p 0005a000 08:32 3886613 /libx32/libpcre.so.0.0.1 f751b000-f751c000 rw-p 0005b000 08:32 3886613 /libx32/libpcre.so.0.0.1 f751c000-f753c000 r-xp 00000000 08:32 3886606 /libx32/ld-2.14.1.so f770d000-f7734000 rw-p 00000000 00:00 0 f7737000-f7738000 rw-p 00000000 00:00 0 f7739000-f773b000 rw-p 00000000 00:00 0 f773b000-f773c000 r--p 0001f000 08:32 3886606 /libx32/ld-2.14.1.so f773c000-f773d000 rw-p 00020000 08:32 3886606 /libx32/ld-2.14.1.so ffd87000-ffda8000 rw-p 00000000 00:00 0 [stack] ffdff000-ffe00000 r-xp 00000000 00:00 0 [vdso]
Created attachment 295309 [details] repack-dir.tar.bz2 (part 0) ah, you're going to hate me, but the archive is too big for bugzilla. so fetch these files and concat them together: cat repack-dir.tar.bz2.[0123] > repack-dir.tar.bz2
Created attachment 295311 [details] repack-dir.tar.bz2 (part 1)
Created attachment 295313 [details] repack-dir.tar.bz2 (part 2)
Created attachment 295315 [details] repack-dir.tar.bz2 (part 3)
This smells like http://sourceware.org/bugzilla/show_bug.cgi?id=13344
glibc-2.14.1 doesn't include leaf markings, so i don't think it is the same
downside: it still crashes upside: it's much more reproducible -- happens first time git: arena.c:663: heap_trim: Assertion `p->size == (0|0x1)' failed.
$ git pack-objects --keep-true-parents --honor-pack-keep --non-empty --all \ --reflog -q --delta-base-offset f </dev/null git: arena.c:663: heap_trim: Assertion `p->size == (0|0x1)' failed.
vapier: does this still exist? the assertion file arena.c isn't part of Git.
i haven't retested since june, but nothing has really changed, so i don't expect this to be fixed ... i won't be able to retest for a week or two as the chroot lived on a hd that needs recovering, and i'll be traveling this next week for plumbers
hmm, pbzip2 dies when compressing perl man pages: pbzip2: arena.c:661: heap_trim: Assertion `p->size == (0|0x1)' failed. i'll investigate this more and see if it's an issue in glibc or ...
*** Bug 420361 has been marked as a duplicate of this bug. ***
Created attachment 323108 [details] pbzip2.tar.xz (part 1) here is the pbzip2 stuff packaged up for failure. run the doit.sh script to make it fall apart.
Created attachment 323110 [details] pbzip2.tar.xz (part 2)
i've pushed this in our 2.16.0 glibc patchset now http://sources.gentoo.org/gentoo/src/patchsets/glibc/2.16.0/0055_all_glibc-2.16-x32-malloc-align.patch?rev=1.1