git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
Amit Bakshi <ambakshi@gmail.com>
Date
Dec 2, 2013, 22:20 UTC
Message-ID
<CAFGOX=WsGqmgxps64mWKPJ_Anj0tNTz8nQwpyDOpfCVQ_5HXow@mail.gmail.com>
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
Next: Thomas Rast
Message 1 of 2 in “[BUG] Core dump w/ bus error on bad mmap'd packfile”
  1. Amit BakshiDec 2, 2013
  2. Thomas RastDec 3, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.