Re: bug: "fatal: cannot pread pack file", version 1.7.5.4
From: Lars Winterfeld <hidden>
Date: 2016-06-15 22:54:29
Junio C Hamano:
Jeff King [off-list ref] writes:quoted
On Tue, Jul 03, 2012 at 11:25:16AM +0700, Nguyen Thai Ngoc Duy wrote:quoted
On Tue, Jul 3, 2012 at 10:45 AM, Jeff King [off-list ref] wrote:quoted
On Tue, Jul 03, 2012 at 12:43:42AM +0200, Andreas Schwab wrote:quoted
Jeff King [off-list ref] writes:quoted
It's very odd for pread to report ENOENT (since it is always operating on an already-opened file descriptor).It doesn't, but gettext will clobber errno: n = pread(pack_fd, inbuf, n, from); if (n < 0) die_errno(_("cannot pread pack file")); There is nothing that saves errno. This isn't limited to i18n though, any function call in the arguments may potentially clobber errno.That's horribly lame of gettext. I don't expect arbitrary functions to save errno, but when the entire purpose of a function is to be a non-intrusive wrapper to massage messages to the user, it seems kind of evil to overwrite errno. Isn't the whole point of calling it "_" that you don't want to or have to notice it?Agreed.Hmm. According to gettext(3): ERRORS errno is not modified. And googling for "gettext" and "errno" reveals several bugfixes in GNU gettext to make sure that gettext preserves errno. I wonder if there are systems where that is not the case, though; I don't know what non-GNU gettext implementations are in common use these days. I'd still be curious to hear what platform the server is for this bug report.Hrm, has this ever been resolved?
Thank you for asking. My local git version is 1.7.5.4, the server version that I actually ended up pushing the files to was however still some 1.6.x. So it was a false alarm. Sorry about that. As far as I can follow, there is no non-GNU gettext involved. Thanks for digging that deep into the problem, but it was my fault, probably not something about lost errno.