Jeff King <peff@xxxxxxxx> writes: > It would probably look like the patch below, though it really feels like > the right solution is to fix the cygwin bug. Thanks for a quick analysis and fix, folks. We would need to assume certain things that the platform would give its users are reliable, and system calls are fundamental part; otherwise we would end up tying our hands behind our back saying "we cannot use this and that as these are unreliable in certain places" and litter our codebase with full of ifdefs and workarounds. If this were merely of a breakage in a test release or a nightly build, I would be happier to see us ignore this, but the problematic one is widely in the wild, a workaround would be necessary, and more importantly, if it is harder for a casual end-user to tell if the platform is affected (I am assuming that most releases of Cygwin is without this bug, and most users who build git themselves wouldn't bother reading README or Makefile even if we said a MAX_WRITE_SIZE definition is necessary only for this and that version), I would rather see a change that covers the problem a bit more widely than necessary. How prevalent is the problematic cygwin1.dll 1.7.8? Also for how long did this bug exist, in other words, if we were to make a table of problematic versions, would we have only just a handful entries in it? Also can we at runtime find out what version we are running? The reason I am asking these questions is because I think, assuming that this would affect many unsuspecting Cygwin users, the best fix would be to add a hook in the compat/ layer that decides if MAX_WRITE_SIZE workaround is necessary at runtime, and do something like this: ssize_t xwrite(int fd, const void *buf, size_t len) { ssize_t nr; static size_t max_write_size = platform_max_write_size(); if (max_write_size && max_write_size < len) len = max_write_size; ... } And then we would have in git-compat-util.h something like: #define platform_max_write_size() 0 on sane platforms, so that the fix will be optimized away by the compiler. By the way, does the same version of Cygwin have similar issue on the read side? -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html