Subject: `git gc` says "unable to read" but `git fsck` happy

From: Stefan Monnier <[email-masked]>
Date: Wed, 29 Mar 2023 18:05:24 -0400

Here's an example session:

    % LANG=C git fsck --strict; LANG=C git gc
    Checking object directories: 100% (256/256), done.
    error in tree 2699d230e3b592ae42506d7b5c969a7ac6a4593c: zeroPaddedFilemode: contains zero-padded file modes
    Checking objects: 100% (462555/462555), done.
    Verifying commits in commit graph: 100% (117904/117904), done.
    Enumerating objects: 462573, done.
    Counting objects: 100% (462573/462573), done.
    Delta compression using up to 8 threads
    Compressing objects: 100% (155363/155363), done.
    fatal: unable to read f5e44b38fc8f7e15e5e6718090d05b09912254fa
    fatal: failed to run repack
    %

How come it can't read `f5e44b38fc8f7e15e5e6718090d05b09912254fa` during
"repack" while `git fsck` says everything is fine?

More importantly: how do I diagnose this further and fix it?

Rumors on the net suggest that `git gc --aggressive` may circumvent this
problem occasionally, but those don't seem to know what they're talking
about, and in my case it didn't make any difference (except that it
takes more time :-).

        Stefan