# BUG: commit-graph.c:1068 when doing `git pull`

4 messages from 2020-11-02 to 2020-11-12. Participants: herr.kaste, Taylor Blau, Ævar Arnfjörð Bjarmason.
Thread: https://gitlist.dev/t/54555

## herr.kaste, 2020-11-02 18:30

Subject: BUG: commit-graph.c:1068 when doing `git pull`
Message-ID: <CAFzd1+7xQHgaOYKW7WZaWCPdp85Pfk8k_M-gVtBq6Wf7bbJTzg@mail.gmail.com>
URL: https://gitlist.dev/e/CAFzd1%2B7xQHgaOYKW7WZaWCPdp85Pfk8k_M-gVtBq6Wf7bbJTzg%40mail.gmail.com

```
Hi all!

I'm stuck with this error message

    $ git pull
    BUG: commit-graph.c:1068: missing parent
104f5eb377763b2ed9663e8949aed265b69f000f for commit
c59ed9b7b6d4268ae6cb1069a9b51e02ad9aa1d8

This happens since the last `fetch --prune origin`.

If I do it again, I get

    $ git pull
    fatal: Unable to create 'C:/Users/c-flo/AppData/Roaming/Sublime
Text 3/Packages/GitSavvy/.git/objects/info/commit-graphs/commit-graph-chain.lock':
File exists.
    ...

And upon removing that file, I get the first error message again.

I actually don't know yet how to move on from here.  I'm stuck, so I
appreciate any help.

    $ git --version
    git version 2.29.2.windows.1


Regards
Caspar Duregger

```

## herr.kaste, 2020-11-02 19:12

Subject: Re: BUG: commit-graph.c:1068 when doing `git pull`
Message-ID: <CAFzd1+7VxaGGMVKicuy8KnWdZoBxEHY8xS9kK1VF0Tgai=Kcxg@mail.gmail.com>
URL: https://gitlist.dev/e/CAFzd1%2B7VxaGGMVKicuy8KnWdZoBxEHY8xS9kK1VF0Tgai%3DKcxg%40mail.gmail.com
In-Reply-To: <CAFzd1+7xQHgaOYKW7WZaWCPdp85Pfk8k_M-gVtBq6Wf7bbJTzg@mail.gmail.com>

```
A

    $ git commit-graph write

did the trick.

Let me know if you think there could be something useful to reproduce,
somewhere.

Regards
Caspar Duregger

Am Mo., 2. Nov. 2020 um 19:30 Uhr schrieb herr.kaste <herr.kaste@gmail.com>:
>
> Hi all!
>
> I'm stuck with this error message
>
>     $ git pull
>     BUG: commit-graph.c:1068: missing parent
> 104f5eb377763b2ed9663e8949aed265b69f000f for commit
> c59ed9b7b6d4268ae6cb1069a9b51e02ad9aa1d8
>
> This happens since the last `fetch --prune origin`.
>
> If I do it again, I get
>
>     $ git pull
>     fatal: Unable to create 'C:/Users/c-flo/AppData/Roaming/Sublime
> Text 3/Packages/GitSavvy/.git/objects/info/commit-graphs/commit-graph-chain.lock':
> File exists.
>     ...
>
> And upon removing that file, I get the first error message again.
>
> I actually don't know yet how to move on from here.  I'm stuck, so I
> appreciate any help.
>
>     $ git --version
>     git version 2.29.2.windows.1
>
>
> Regards
> Caspar Duregger

```

## Taylor Blau, 2020-11-12 14:42

Subject: Re: BUG: commit-graph.c:1068 when doing `git pull`
Message-ID: <X61J7bWDXO/r7Ob5@nand.local>
URL: https://gitlist.dev/e/X61J7bWDXO%2Fr7Ob5%40nand.local
In-Reply-To: <CAFzd1+7VxaGGMVKicuy8KnWdZoBxEHY8xS9kK1VF0Tgai=Kcxg@mail.gmail.com>

```
Hi Caspar,

On Mon, Nov 02, 2020 at 08:12:07PM +0100, herr.kaste wrote:
> A
>
>     $ git commit-graph write
>
> did the trick.
>
> Let me know if you think there could be something useful to reproduce,
> somewhere.

I think this is worth trying to reproduce. The first message you're
seeing about the commit-graph-chain.lock already existing is a
red-herring: it's likely that the last time you tried to generate a
commit-graph, that it hit that same BUG() and left the stale lock laying
around. (I can't remember off the top of my head whether we still run
the atexit handlers upon a BUG(), but even still, I could believe that
some other stray process left it laying around, too).

So, what's interesting is why your commit graph ended up in a state that
it got some commit without all of its parents. If you could reproduce
that state, that would be interesting.

Are you using shallow or partial clones?

> Regards
> Caspar Duregger
>
> Am Mo., 2. Nov. 2020 um 19:30 Uhr schrieb herr.kaste <herr.kaste@gmail.com>:
> >
> > Hi all!
> >
> > I'm stuck with this error message
> >
> >     $ git pull
> >     BUG: commit-graph.c:1068: missing parent
> > 104f5eb377763b2ed9663e8949aed265b69f000f for commit
> > c59ed9b7b6d4268ae6cb1069a9b51e02ad9aa1d8
> >
> > This happens since the last `fetch --prune origin`.
> >
> > If I do it again, I get
> >
> >     $ git pull
> >     fatal: Unable to create 'C:/Users/c-flo/AppData/Roaming/Sublime
> > Text 3/Packages/GitSavvy/.git/objects/info/commit-graphs/commit-graph-chain.lock':
> > File exists.
> >     ...
> >
> > And upon removing that file, I get the first error message again.
> >
> > I actually don't know yet how to move on from here.  I'm stuck, so I
> > appreciate any help.
> >
> >     $ git --version
> >     git version 2.29.2.windows.1
> >
> >
> > Regards
> > Caspar Duregger

Thanks,
Taylor

```

## Ævar Arnfjörð Bjarmason, 2020-11-12 16:27

Subject: Re: BUG: commit-graph.c:1068 when doing `git pull`
Message-ID: <871rgyh76x.fsf@evledraar.gmail.com>
URL: https://gitlist.dev/e/871rgyh76x.fsf%40evledraar.gmail.com
In-Reply-To: <X61J7bWDXO/r7Ob5@nand.local>

```

On Thu, Nov 12 2020, Taylor Blau wrote:

> Hi Caspar,
>
> On Mon, Nov 02, 2020 at 08:12:07PM +0100, herr.kaste wrote:
>> A
>>
>>     $ git commit-graph write
>>
>> did the trick.
>>
>> Let me know if you think there could be something useful to reproduce,
>> somewhere.
>
> I think this is worth trying to reproduce. The first message you're
> seeing about the commit-graph-chain.lock already existing is a
> red-herring: it's likely that the last time you tried to generate a
> commit-graph, that it hit that same BUG() and left the stale lock laying
> around. (I can't remember off the top of my head whether we still run
> the atexit handlers upon a BUG(), but even still, I could believe that
> some other stray process left it laying around, too).
>
> So, what's interesting is why your commit graph ended up in a state that
> it got some commit without all of its parents. If you could reproduce
> that state, that would be interesting.

No matter how it got to that point we shouldn't be dying on a "git pull"
just because the commit-graph code had a hickup. I thought I'd addressed
this in 43d3561805 ("commit-graph write: don't die if the existing graph
is corrupt", 2019-03-25) and related commits, but I see that's not the
case.

That code really needs to learn how to operate in two different
modes. One in the write/verify codepath where we're the primary command
being called, and one where we're just being called on
fetch/pull/status/whatever when we shouldn't hard die just because we
can't access the commit-graph side data.

```
