Re: Fwd: Possible git bug in commit-graph: "invalid commit position"
To
Derrick Stolee
Cc
git@vger.kernel.org
From
Gary Oberbrunner
See Also
Prev Ref 1
Date
2020-02-04 22:33:42 UTC
Sorry for the long reply delay; the bug went away and only just showed
up again. Here's the info you requested.
I'm now running git 2.25.0.

Showing the bug:
% git show --patch df2f
fatal: invalid commit position. commit-graph is likely corrupt
commit df2f311c78b87d16509f352c66d7309957740711 (origin/feature/renderer)
Author: [redacted]
Date: Mon Jan 20 12:37:01 2020 -0500

WIP: add outline of back-end render web service

Submodule packages/ngl f713ed5..7de8821:
%

Run "git commit-graph verify": doesn't detect any problem.
% git commit-graph verify
Verifying commits in commit graph: 100% (1/1), done.
Verifying commits in commit graph: 100% (2/2), done.
Verifying commits in commit graph: 100% (10/10), done.
Verifying commits in commit graph: 100% (14/14), done.
Verifying commits in commit graph: 100% (71/71), done.
Verifying commits in commit graph: 100% (478/478), done

You asked me to delete .git/objects/info/commit-graph -- I don't have
such a file, but  I do have a subdir "commit-graphs":
% ls .git/objects/info/commit-graphs/
commit-graph-chain graph-e96da2872d5c5fc1c4e399f99b7800d08fcdd273.graph
graph-4f5807bbdcba22f8fdc081c91205c40d40e99d38.graph
graph-e9f543a1389f8f5d6e91c09caa6658a1905d00fe.graph
graph-79f0f3bff07f7e7dda9d2438a30ef6483a2b531f.graph tmp_graph_GHI48b
graph-83ce268fda98e26938ce702bb261e1719ff816ba.graph tmp_graph_Ypgl2f
graph-93a966dc8be3040189367f047f5111e9f29c2d6c.graph

After removing that subdir and running "git commit-graph write", I
*do* have a .git/objects/info/commit-graph file.

The bug is still present though! However, I do have a git submodule
with its own .git/objects/info/commit-graphs; let's look into that.
In the git submodule dir, "git commit-graph verify" succeeds with no
errors (just like the parent).
Deleted the .git/objects/info/commit-graphs subdir, regenerated with
"git commit-graph write".
Retest original problem:
- Now the problem is fixed!

So long story short: the corrupted git commit-graph was in a
submodule. It does appear that "git commit-graph verify" failed to
detect the corruption. Removing and regenerating fixes it.

I do have the old git submodule's commit-graphs data in case it's
useful. Let me know and I can send it along.


On Mon, Jan 20, 2020 at 7:37 PM Derrick Stolee <stolee@gmail.com> wrote:
>
> On 1/20/2020 12:32 PM, Gary Oberbrunner wrote:
> > I'm running git 2.24.1 on Linux/WSL, and sometimes git fails with this error:
> > ```
> > % git diff --cached
> > fatal: invalid commit position. commit-graph is likely corrupt
> > ```
> > Usually that error goes away after I do a few more git operations, but
> > I haven't been able to discern a pattern yet. It's not always with
> > "diff", can be any git command as far as I can tell.
> > Perhaps it started after I enabled the commit-graph stuff:
> > ```
> > [core]
> >         editor = emacsclient -c -a \"\"
> >         preloadindex = true
> >         fscache = true
> >         autocrlf = false
> >         commitGraph = true
> >         writeCommitGraph = true
> > ```
> > In fact, when I turn off `commitGraph`, the error goes away. But as I
> > say, sometimes it goes away of its own accord.
>
> Disabling the featuere will definitely remove the error. Some commands may
> also just not "visit" the corrupt commit.
>
> > Googling turns up almost nothing on this error. I have no idea if I've
> > done something wrong to corrupt the commit graph, or if it's a git
> > bug. If there's anything I can do to help debug it, I'd be happy to --
> > just let me know.
>
> Please run "git commit-graph verify" to see if that catches the
> corruption. If not, then the verify feature is broken.
>
> Then, you can delete your .git/objects/info/commit-graph file
> and rebuild it with "git commit-graph write". (If you have
> fetch.writeCommitGraph enabled, then you may need to instead
> delete the .git/objects/info/commit-graphs directory.) If that
> process does not fix the problem, then there is definitely a bug
> in the feature. At the moment, it may just be a flipped bit in
> the file.
>
> Thanks,
> -Stolee



-- 
Gary