On 26/08/17 22:11, Adam Dinwoodie wrote: > On Sat, Aug 26, 2017 at 11:53:37AM -0700, Jeff King wrote: >> On Sat, Aug 26, 2017 at 01:57:18AM +0100, Ramsay Jones wrote: >> >>>> diff --git a/run-command.c b/run-command.c >>>> index 98621faca8..064ebd1995 100644 >>>> --- a/run-command.c >>>> +++ b/run-command.c >>>> @@ -641,7 +641,6 @@ int start_command(struct child_process *cmd) >>>> } >>>> >>>> trace_argv_printf(cmd->argv, "trace: run_command:"); >>>> - fflush(NULL); >>>> >>>> #ifndef GIT_WINDOWS_NATIVE >>>> { >>> >>> I suspect not, but I can give it a try ... >>> >>> ... oh, wow, that works! Ahem. (Hmm, so it's flushing stdin?!) >> >> Interesting. I find it a little hard to believe there's so obvious a bug >> as "fflush(NULL) flushes stdin", but well...that's what it seems like. >> >> If that's truly what it is, this is the minimal reproduction I came up >> with: >> >> -- >8 -- >> #include <stdio.h> >> >> int main(void) >> { >> char buf[256]; >> while (fgets(buf, sizeof(buf), stdin)) { >> fprintf(stdout, "got: %s", buf); >> fflush(NULL); >> } >> return 0; >> } >> -- 8< -- >> >> If this really is the bug, then doing something like "seq 10 | ./a.out" >> would drop some of the input lines. > > ...yep. It does. Specifically, I consistently only get the firsts > line: > > $ seq 10 | ./a.exe > got: 1 > > $ > > If I introduce a delay between the lines of stdin (which I tested by > just typing stdin from the keyboard), it works as expected. > > Looks like this one will need to go to the Cygwin mailing list; I'll > take it there shortly. Thank you all for your help getting this far! This is apparently fixed in cygwin v2.8.3 [see commit 78ade082fe, ('Revert "errno: Stop using _impure_ptr->_errno completely"', 19-07-2017), commit 9cc89b0438 ("cygwin: Use errno instead of _impure_ptr->_errno", 19-07-2017), commit a674199fc9 ("cygwin: Bump DLL version to 2.8.3", 19-07-2017) and commit d2ae2f00b8 ("cygwin: add fflush fix to release notes", 19-07-2017)]. I haven't had a chance to try v2.8.3 yet (it's 3am and I'm about to go get some sleep). ATB, Ramsay Jones