[BUG] Core dump w/ bus error on bad mmap'd packfile

From: Amit Bakshi <hidden>
Date: 2016-06-15 22:59:22

Hi,

 I was getting core dumps (bus error 7) with git 1.7.1 when doing a
git checkout. I tried git fsck, and same thing. I got the same with
precompiled rpms of 1.7.12, and with a locally compiled version of git
1.8.5.

 The simplest/quickest repro I got is using git-fsck. The stacktrace
blames SHA1_Update in verify_packfile. Upon further investigation all
the in/offsets/remaining seemed ok. I traced it to a 17mb packfile
that gets an i/o error when attempting to read it past 13mb.  It looks
like it's xmmap'ing the file and passing that pointer to
SHA1_Update(). I don't know why in some paths it gives an i/o error
and in other paths it segfaults (I added the extra debug output to
git-fsck).

$ git fsck
Checking pack-0ccb5ee4f60003a7ea47d6904633cce5973efa60.pack
in: 0x7f9070507000 remain: 17345210 offset: 17345230
Bus error (core dumped)

git verify-pack correctly shows the error, without a bus error.

$ git verify-pack -v pack-0ccb5ee4f60003a7ea47d6904633cce5973efa60.pack
fatal: read error on input: Input/output error
pack-0ccb5ee4f60003a7ea47d6904633cce5973efa60.pack: bad

Not sure what the right solution is without impacting perf, but it
took me a while to track down and having an error message indicating
the bad file would've been a great help.

Amit
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help