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

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
Previous: Bryan TurnerNext: Bryan Turner
Message 2 of 3 in “Puzzling Git backtrace”
  1. Bryan TurnerMar 28, 2019
  2. Jeff KingMar 28, 2019
  3. Bryan TurnerMar 28, 2019

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.