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