On Wed, Oct 16, 2024 at 11:09:22AM -0400, Jeff King wrote: > On Wed, Oct 16, 2024 at 10:55:40AM -0400, Jeff King wrote: > > > > The logic is broken on Cygwin though: when a client asks the daemon to > > > exit, they won't see the EOF and will instead get an error message: > > > > > > fatal: read error from cache daemon: Software caused connection abort > > > > > > This issue is known in Cygwin, see for example [1], but the exact root > > > cause is not known. > > > [...] > > > [1]: https://github.com/cygporter/git/issues/51 > > > > I don't see any details at that issue, but I'm not sure how it would fix > > things. From the client's perspective, they are going to see the > > descriptor either way. Unless there is some magic that fclose() does > > that a normal descriptor-close-on-exit does not do. > > > > That "Software caused connection abort" thing seems like a weird > > not-standard-Unix errno value. Searching for it mostly yields people > > complaining about getting it from ssh under cygwin. :) > > > > If the magic that cygwin needs is actually "fclose before unlink", then > > that is in opposition to other platforms (and I suspect would make t0301 > > racy there). > > This all seemed eerily familiar. Try this thread: > > https://lore.kernel.org/git/9dc3e85f-a532-6cff-de11-1dfb2e4bc6b6@xxxxxxxxxxxxxxxxxxxx/ > > It looks like the conclusion was that we should adjust errno handling on > the client side, but nobody ever followed up with an actual patch. Thanks for digging. It would be great if you both and Ramsay could unify on an agreeable path forward here. In the meantime, I picked this up as 'ps/credential-cache-exit-cygwin' in my tree, but let's hold it out from 'seen' as you note it racily fails t0301. Thanks, Taylor