Skip to content

Instantly share code, notes, and snippets.

@oyvholm
Created October 27, 2011 06:49
Show Gist options
  • Save oyvholm/1318935 to your computer and use it in GitHub Desktop.
Save oyvholm/1318935 to your computer and use it in GitHub Desktop.
Copy of email
Something really weird is happening to a repository I'm working on, and
it's only a problem in recent Gits. A bisect shows that from
v1.7.6-1-g2548183 ("fix phantom untracked files when core.ignorecase is
set") and newer, this happens:
$ git clone git://gitorious.org/tz/tzfiles.git
Cloning into tzfiles...
remote: Counting objects: 358, done.
remote: Compressing objects: 100% (352/352), done.
remote: Total 358 (delta 8), reused 343 (delta 3)
Receiving objects: 100% (358/358), 44.15 MiB | 3.76 MiB/s, done.
Resolving deltas: 100% (8/8), done.
$ cd tzfiles/
$ git status
git: malloc.c:3096: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.
Aborted
$ git status
*** glibc detected *** git: free(): invalid next size (normal): 0x089f5588 ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(+0x6b591)[0xb74d3591]
/lib/tls/i686/cmov/libc.so.6(+0x6cde8)[0xb74d4de8]
/lib/tls/i686/cmov/libc.so.6(cfree+0x6d)[0xb74d7ecd]
/lib/tls/i686/cmov/libc.so.6(+0x5c410)[0xb74c4410]
/lib/tls/i686/cmov/libc.so.6(fopen64+0x2c)[0xb74c69ec]
git[0x80c1fdd]
git[0x811b82b]
git[0x80637ea]
git[0x804bc87]
git[0x804be93]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe6)[0xb747ebd6]
git[0x804b521]
======= Memory map: ========
08048000-08160000 r-xp 00000000 ca:00 2474445 /usr/local/varprg/git.master.v1.7.7-419-g87009ed/bin/git
08160000-08161000 r--p 00117000 ca:00 2474445 /usr/local/varprg/git.master.v1.7.7-419-g87009ed/bin/git
08161000-08166000 rw-p 00118000 ca:00 2474445 /usr/local/varprg/git.master.v1.7.7-419-g87009ed/bin/git
08166000-081b0000 rw-p 00000000 00:00 0
089ec000-08a0d000 rw-p 00000000 00:00 0 [heap]
b7300000-b7321000 rw-p 00000000 00:00 0
b7321000-b7400000 ---p 00000000 00:00 0
b7444000-b7461000 r-xp 00000000 ca:00 24591 /lib/libgcc_s.so.1
b7461000-b7462000 r--p 0001c000 ca:00 24591 /lib/libgcc_s.so.1
b7462000-b7463000 rw-p 0001d000 ca:00 24591 /lib/libgcc_s.so.1
b7463000-b7464000 rw-p 00000000 00:00 0
b7464000-b7466000 r-xp 00000000 ca:00 1679643 /lib/tls/i686/cmov/libdl-2.11.1.so
b7466000-b7467000 r--p 00001000 ca:00 1679643 /lib/tls/i686/cmov/libdl-2.11.1.so
b7467000-b7468000 rw-p 00002000 ca:00 1679643 /lib/tls/i686/cmov/libdl-2.11.1.so
b7468000-b75bb000 r-xp 00000000 ca:00 25961 /lib/tls/i686/cmov/libc-2.11.1.so
b75bb000-b75bc000 ---p 00153000 ca:00 25961 /lib/tls/i686/cmov/libc-2.11.1.so
b75bc000-b75be000 r--p 00153000 ca:00 25961 /lib/tls/i686/cmov/libc-2.11.1.so
b75be000-b75bf000 rw-p 00155000 ca:00 25961 /lib/tls/i686/cmov/libc-2.11.1.so
b75bf000-b75c3000 rw-p 00000000 00:00 0
b75c3000-b75d8000 r-xp 00000000 ca:00 1679654 /lib/tls/i686/cmov/libpthread-2.11.1.so
b75d8000-b75d9000 r--p 00014000 ca:00 1679654 /lib/tls/i686/cmov/libpthread-2.11.1.so
b75d9000-b75da000 rw-p 00015000 ca:00 1679654 /lib/tls/i686/cmov/libpthread-2.11.1.so
b75da000-b75dc000 rw-p 00000000 00:00 0
b75dc000-b7714000 r-xp 00000000 ca:00 2007508 /lib/i686/cmov/libcrypto.so.0.9.8
b7714000-b771c000 r--p 00137000 ca:00 2007508 /lib/i686/cmov/libcrypto.so.0.9.8
b771c000-b772a000 rw-p 0013f000 ca:00 2007508 /lib/i686/cmov/libcrypto.so.0.9.8
b772a000-b772e000 rw-p 00000000 00:00 0
b772e000-b7741000 r-xp 00000000 ca:00 24635 /lib/libz.so.1.2.3.3
b7741000-b7742000 r--p 00012000 ca:00 24635 /lib/libz.so.1.2.3.3
b7742000-b7743000 rw-p 00013000 ca:00 24635 /lib/libz.so.1.2.3.3
b774b000-b774f000 rw-p 00000000 00:00 0
b774f000-b776a000 r-xp 00000000 ca:00 25083 /lib/ld-2.11.1.so
b776a000-b776b000 r--p 0001a000 ca:00 25083 /lib/ld-2.11.1.so
b776b000-b776c000 rw-p 0001b000 ca:00 25083 /lib/ld-2.11.1.so
bfc1b000-bfc3c000 rw-p 00000000 00:00 0 [stack]
f57fe000-f57ff000 r-xp 00000000 00:00 0 [vdso]
Aborted
$
Reverting 2548183 fixes the problem.
It also seems that the behaviour is not consistent. Sometimes, after
running the second "git status", this happens:
$ git st
error: index uses extension, which we do not understand
fatal: index file corrupt
And no, this is not memory corruption or something like that, the same
thing happens on my laptop.
Another curious thing: When using an earlier git (for example v1.7.6 in
the example below) on this repo after a "git status" with a recent git,
it segfaults. This indicates that recents Gits messes up something so
even old gits won't work in that repo anymore. This is the last lines of
an strace:
open(".git/objects/pack", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
getdents64(3, /* 4 entries */, 32768) = 192
access(".git/objects/pack/pack-b9b05d1e8fed49138c1ffda8f0f2b7d7a8d31c6a.keep", F_OK) = -1 ENOENT (No such file or directory)
stat64(".git/objects/pack/pack-b9b05d1e8fed49138c1ffda8f0f2b7d7a8d31c6a.pack", {st_mode=S_IFREG|0444, st_size=46297839, ...}) = 0
getdents64(3, /* 0 entries */, 32768) = 0
close(3) = 0
open(".git/objects/info/alternates", O_RDONLY|O_LARGEFILE|O_NOATIME) = -1 ENOENT (No such file or directory)
open(".git/objects/pack/pack-b9b05d1e8fed49138c1ffda8f0f2b7d7a8d31c6a.idx", O_RDONLY|O_LARGEFILE|O_NOATIME) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=11096, ...}) = 0
mmap2(NULL, 11096, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb76e1000
close(3) = 0
getrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=1024}) = 0
open(".git/objects/pack/pack-b9b05d1e8fed49138c1ffda8f0f2b7d7a8d31c6a.pack", O_RDONLY|O_LARGEFILE|O_NOATIME) = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=46297839, ...}) = 0
fcntl64(3, F_GETFD) = 0
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
read(3, "PACK\0\0\0\2\0\0\1f", 12) = 12
_llseek(3, 46297819, [46297819], SEEK_SET) = 0
read(3, ",j\212\0375c\335\0k\244)\256\376\24\v\344\6]0\230", 20) = 20
mmap2(NULL, 33554432, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb53fc000
open(".git/info/grafts", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open(".git/shallow", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
brk(0x977e000) = 0x977e000
open("/proc/meminfo", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb76e0000
read(4, "MemTotal: 1028684 kB\nMemF"..., 1024) = 1024
close(4) = 0
munmap(0xb76e0000, 4096) = 0
access(".git/info/exclude", R_OK) = 0
open(".git/info/exclude", O_RDONLY|O_LARGEFILE) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=240, ...}) = 0
read(4, "# git ls-files --others --exclud"..., 240) = 240
close(4) = 0
access("/home/sunny/src/git/home-sunny/.gitexclude", R_OK) = 0
open("/home/sunny/src/git/home-sunny/.gitexclude", O_RDONLY|O_LARGEFILE) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=86, ...}) = 0
read(4, "\n# ~/.gitexclude\n# File ID: bcf6"..., 86) = 86
close(4) = 0
open(".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 4
getdents64(4, /* 7 entries */, 32768) = 216
open(".gitignore", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Complete strace dump is stored at https://gist.github.com/1318830 .
I'm currently using 1.7.7.419.g87009 , compiled with a regular "make"
from the master branch. A quick test with newest master
(v1.7.7.1-475-g997a194) shows the same error. Not installed properly,
though, as I haven't run the test suite yet.
System info:
Ubuntu 10.04.3 LTS
gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3
GNU ld (GNU Binutils for Ubuntu) 2.20.1-system.20100303
Same thing happens with Ubuntu 10.10 on my laptop.
Even when creating a bundle and recloning, this happens. Also when
initialising a new, clean repo and fetching from the original local
clone, same story.
The repository was created on 2011-10-08 06:54:00 +0200, and because I
create a tag everytime I compile (using
<https://github.com/sunny256/utils/blob/master/build-git>), I know the
repository was created with git v1.7.7-138-g7f41b6b.
Regards,
Øyvind
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment