Re: Race condition in git-bundle(1) create when ref is updated while running
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 9, 2024, 17:39 UTC
- Message-ID
- <xmqq5xyxh6zp.fsf@gitster.g>
- In-Reply-To
- <87eddlpx5k.fsf@iotcl.com>
Toon Claes <toon@iotcl.com> writes:
> I discovered a bug in git-bundle(1) create. There is a race condition > happening when a ref gets updated while the bundle creation process is > running.
"--all" that tells "traverse from the tip of all the refs" to any rev-list family of commands (like log and bundle) eventually boils down to opendir("refs/...") followed by readdir(), and if somebody creates or deletes files while you are reading in such a loop, readdir() may appear to skip an entry, which is understandable. Even "git for-each-ref" would race with a ref update (which involves removing a file and then creating another file at the same path), I would think. IOW, I do not think this is limited to "git bundle".