Re: Puzzling Git backtrace
- From
Jeff King <peff@peff.net>
- Date
- Mar 28, 2019, 01:49 UTC
- Message-ID
- <20190328014957.GA7887@sigill.intra.peff.net>
- In-Reply-To
- <CAGyf7-F8cmzOuhi6zeJJ13iwGh_ie-uTiJYUzBwssvH+kCY+yA@mail.gmail.com>
On Wed, Mar 27, 2019 at 05:49:27PM -0700, Bryan Turner wrote:
Show 9 quoted lines
> I'm trying to assist a Bitbucket Server customer who is seeing some > "git-upload-pack" processes "hang" on their server. > > While investigating, we had them connect gdb to their processes (which > are 2.10.0 built from source using a simple unzip-and-run-make > approach) and get the backtraces for them. The output that they're > seeing makes no sense to me, though, so I'm throwing this out to the > list just to see if anyone has any idea how the processes could end up > like this.
upload-pack didn't become a builtin until v2.18, so...
Show 5 quoted lines
> When they attached to 32433 and printed its backtrace, though, things > go a little sideways: > > (gdb) attach 32433 > Attaching to program: /usr/bin/git, process 32433
The debugger needs to be using git-upload-pack as its executable, not "git".
Show 8 quoted lines
> (gdb) bt > #0 0x00007f79d1aca240 in ?? () > #1 0x000000000045179e in mktree_line (allow_missing=4, > nul_term_line=0, len=<optimized out>, buf=<optimized out>) at > builtin/mktree.c:103 > #2 cmd_mktree (ac=<optimized out>, av=<optimized out>, > prefix=<optimized out>) at builtin/mktree.c:173 > #3 0x0000000000000000 in ?? ()
And all of this is just trash, because it's matching the core with the wrong binary.
I'm sure there's a way to switch binaries within gdb, but I don't know it offhand. I'd just start a new gdb like:
gdb git-upload-pack 32433
-Peff