From: Jeff King <peff@peff.net>
To: Paul Smith <paul@mad-scientist.net>
Cc: git@vger.kernel.org
Subject: Re: Help with "fatal: unable to read ...." error during GC?
Date: Wed, 8 Aug 2018 12:06:12 -0400 [thread overview]
Message-ID: <20180808160612.GC1607@sigill.intra.peff.net> (raw)
In-Reply-To: <1b2f649f0ece2ff46801c7bbd971c736e257af83.camel@mad-scientist.net>
On Wed, Aug 08, 2018 at 10:30:11AM -0400, Paul Smith wrote:
> I recently upgraded from Git 2.9.2 to 2.18.0 (note, I have no
> particular reason to believe this is related just passing info). I'm
> running on Linux (64bit Ubuntu 18.04.1 but I've compiled Git myself
> from source, I'm not using the distro version).
>
> I have a local repository I've been using for about two years (the
> .git/description file, which I don't use, has a TLM of July 31, 2016),
> with lots of worktrees being created/pruned/etc. during that time.
>
> Note I'm doing all these operations in the 'main' repository, not in
> any of the worktrees.
Hrm, there was a pretty serious corruption bug in early versions of the
worktree code (IIRC, pruning would not consider detached HEADs from
other worktrees, and could drop that object).
> Yesterday, when I tried to fetch from my upstream I got a notification
> about GC needed. Then GC failed with these errors (HEAD is set to
> master which is the same as origin/master):
>
> warning: reflog of 'HEAD' references pruned commits
> warning: reflog of 'HEAD' references pruned commits
> warning: reflog of 'HEAD' references pruned commits
> warning: reflog of 'HEAD' references pruned commits
> warning: reflog of 'HEAD' references pruned commits
> warning: reflog of 'HEAD' references pruned commits
> warning: reflog of 'HEAD' references pruned commits
> warning: reflog of 'HEAD' references pruned commits
> warning: reflog of 'HEAD' references pruned commits
> warning: reflog of 'HEAD' references pruned commits
> fatal: unable to read c104b8fb3631b5c54695206b2f73310c023c9963
> error: failed to run repack
So that definitely looks like the corruption I'd expect from the
worktree bug, but...
> I ran a git fsck --full which showed me a lot of dangling commits and
> blobs, but no errors, no broken link messages, etc.
I'd have expected fsck to find it, too. However, looking at the code,
I'm not convinced that fsck is actually considering detached worktree
heads properly, either. Try:
git rev-list --all --reflog --objects >/dev/null
which I know checks worktrees correctly. I'd expect that to fail.
If it does, then we need to narrow down which worktree is corrupt.
Perhaps something like:
git worktree list |
while read worktree head junk; do
git rev-list --objects $head >/dev/null ||
echo "$worktree seems corrupt"
done
> I can't find that SHA anywhere: I looked in .git/objects, etc. I also
> can't find any problems with my repo; obviously I haven't checked
> everything but I can show the git log back to the initial commit, all
> my stashes look fine, all my worktrees seem to be OK (git status etc.
> work fine in all of them).
"git status" might succeed if the corruption is further back in the
history.
> I would hate to have to throw this setup away since it has 23 stashes
> and 25 worktrees in various states that would be annoying to have to
> recreate...
Definitely don't throw it away. I suspect you have a single corrupt
worktree, and everything else is fine.
-Peff
next prev parent reply other threads:[~2018-08-08 16:06 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-08 14:30 Help with "fatal: unable to read ...." error during GC? Paul Smith
2018-08-08 16:06 ` Jeff King [this message]
2018-08-08 17:35 ` Paul Smith
2018-08-08 18:24 ` Jeff King
2018-08-08 21:10 ` Paul Smith
2018-08-09 2:45 ` Paul Smith
2018-08-09 17:06 ` Jeff King
2018-08-11 12:13 ` Paul Smith
2018-08-11 14:23 ` Jeff King
2018-08-11 14:25 ` Jeff King
2018-08-11 14:38 ` Duy Nguyen
2018-08-11 16:39 ` Jeff King
2018-08-12 9:29 ` Duy Nguyen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180808160612.GC1607@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
--cc=paul@mad-scientist.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).