Thread (11 messages) flat view 11 messages, 4 authors, 2017-09-08

Re: cat-file timing window on Cygwin

From: Ramsay Jones <hidden>
Date: 2017-08-27 15:47:53


On 27/08/17 12:33, Adam Dinwoodie wrote:
On Sun, Aug 27, 2017 at 03:06:31AM +0100, Ramsay Jones wrote:
quoted
On 26/08/17 22:11, Adam Dinwoodie wrote:
quoted
On Sat, Aug 26, 2017 at 11:53:37AM -0700, Jeff King wrote:
quoted
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).
Cygwin 2.8.3 hasn't been released yet, 
Heh, yes, I found that out myself this afternoon. ;-)
                                        but I've just tested the latest
development snapshot with Jeff's simple test case, and it works as
expected, so I'm going to assume the Git test will start passing once
that version of the Cygwin DLL is released too.
Hmm, I'm not keen on installing "snapshot"(s), so I think I will
wait for the release to test it. (However, as a matter of interest,
how would I obtain/install/test this snapshot release - is it a
'low-risk' exercise?)

ATB,
Ramsay Jones

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help