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

Re: BUG: commit-reach.c:66: bad generation skip

From
Derrick Stolee <stolee@gmail.com>
Date
Feb 8, 2021, 02:26 UTC
Message-ID
<c19b6e23-96cd-fd0a-163d-826b46b51da0@gmail.com>
In-Reply-To
<CA+2K_KqH=Gn=Yx-UYzMBO+gZje3G3PJ_3-5HeO81wyZKvVwOSA@mail.gmail.com>
On 2/7/2021 5:31 PM, Filippo Valsorda wrote:
> 
> On Sun, Feb 7, 2021 at 11:28 PM Filippo Valsorda <valsorda@google.com> wrote:
>> [System Info]
>> git version:
>> git version 2.30.0

_This_ is interesting. I haven't heard of this problem happening in a released version of Git.

I'm CC'ing Jonathan Nieder who recently saw this happening, but that was on a newer version than 2.30.0 with a topic that is not part of 2.30.0. But maybe the version shipped internally is versioned without extra information on top of the latest tag? (I see your @google.com email, which makes me think you have an internal version.)

>> What happened instead? (Actual behavior)
>>
>> BUG: commit-reach.c:66: bad generation skip     ad18 >        7 at
>> be28e5abc5ddca0d6b2d8c91b7bb9c05717154e7

This was recently reported, but it was thought to be due to an in-process topic branch. If you recently had that version installed, then your data would have needed a rewrite anyway.

This hints towards more problems with generation numbers across split commit-graph layers. (The child has generation number 7, so it is likely part of a thin layer.)

This might be sufficient evidence to convert this BUG() to a warning with something like:

  warning: The commit-graph file has incorrect reachability index
  warning: information. Results may be incorrect until commit-graph
  warning: is rewritten with 'git commit-graph write'.

This could also be a die() instead of warning(), as that command itself might return incorrect results.

> I was able to workaround this bug with a "git gc" invocation.

Yes, this will delete (and possibly replace) your commit-graph file where the bad data lies.

To better understand your situation, could you please run the following commands?

	git config --get-regexp graph
	git config features.experimental

I'm specifically looking for values of fetch.writeCommitGraph and gc.writeCommitGraph.

Thanks, -Stolee

Previous: Filippo ValsordaNext: Filippo Valsorda
Message 3 of 6 in “BUG: commit-reach.c:66: bad generation skip”
  1. Filippo ValsordaFeb 7, 2021
  2. Filippo ValsordaFeb 7, 2021
  3. Derrick StoleeFeb 8, 2021
  4. Filippo ValsordaFeb 10, 2021
  5. Derrick StoleeFeb 10, 2021
  6. Junio C HamanoFeb 10, 2021

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.