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


Reply via email to