RE: [BUG] Strange git notes completion behaviour
- From
rsbecker@nexbridge.com <rsbecker@nexbridge.com>
- Date
- Oct 24, 2025, 19:02 UTC
- Message-ID
- <02a401dc4518$bbf66110$33e32330$@nexbridge.com>
- In-Reply-To
- <20251024185209.GA3637589@coredump.intra.peff.net>
Show 55 quoted lines
>-----Original Message----- >From: Jeff King <peff@peff.net> >Sent: October 24, 2025 2:52 PM >To: rsbecker@nexbridge.com >Cc: 'D. Ben Knoble' <ben.knoble@gmail.com>; git@vger.kernel.org >Subject: Re: [BUG] Strange git notes completion behaviour > >On Fri, Oct 24, 2025 at 02:38:05PM -0400, rsbecker@nexbridge.com wrote: > >> On October 24, 2025 1:47 PM, Jeff King wrote: >> >On Fri, Oct 24, 2025 at 01:33:02PM -0400, rsbecker@nexbridge.com wrote: >> > >> >> What I found is this: >> >> >> >> Git drops into sane_execvp and converts the >> >> >> >> git notes show HEAD >> >> >> >> to >> >> >> >> git show 1aa950256829721750e809788e7b858db79a934a. >> >> >> >> When execvp is called, it immediately fails with a -12 - not >> >> returned, just terminates. The -12 is an NonStop-specific execvp >> >> error indicating the process failed because the object is invalid >> >> (strange and likely an artifact rather than a real problem). >> > >> >When you say "object" here, you don't mean a Git object, but rather >> >that >> >execvp() could not run the "git" binary for some reason (so the "object" >> >here is the on-disk executable)? Just making sure I understand. >> > >> >> When I use the arguments as presented to execvp via bash directly, I get: >> >> >> >> error: no note found for object >> >1aa950256829721750e809788e7b858db79a934a. >> >> >> >> There is no commit with that hash. HEAD is actually >> >> 3fc1917e0e69b23265f5c49f90fdb6f4ed98f4a3 >> >> so git show is correctly failing. This is Indicating that notes is >> >> not invoking git correctly. >> > >> >Are you sure you are running "git show" there and not "git notes show". >> >Because 1aa950256 should be the blob that the note for HEAD points >> >to, and thus does not itself have a note. And "git show" should not >> >be looking up notes at all (and the "no note found" message is from >builtin/notes.c). >> >> I am 100% sure that git notes show is running git show with the notes blob as >above. > >Yes, I am, too. What I was asking is when you tried to replicate that using bash >directly, how did you get a "no note found" message from "git show"? I.e., it >sounds like you ran the wrong command. Or I am misunderstanding what you you >meant by "When I use the arguments as presented to execvp via bash directly".
I ran the exact command that git passed to execvp but did so via bash. This is what gdb showed:
Breakpoint 2, sane_execvp (file=0x80aa470 "git", argv=0x8122700)
at /home/randall/git/run-command.c:244
* 244 int exec_id = trace2_exec(file, (const char **)argv);
(xInspect 0,1011):n
* 247 if (!execvp(file, argv))
(xInspect 0,1011):p file
$1 = (const unsigned char *) 0x80aa470 "git"
(xInspect 0,1011):p argv[0]
$2 = 0x81224a0 "git"
(xInspect 0,1011):p argv[1]
$3 = 0x8122770 "show"
(xInspect 0,1011):p argv[2]
$4 = 0x8122780 "1aa950256829721750e809788e7b858db79a934a"
(xInspect 0,1011):p argv[3]
$5 = 0x0I assumed that I should give that command a try from bash.