> -----Original Message----- > From: Ramsay Jones > Sent: Sunday, August 27, 2017 11:48 AM > To: Adam Dinwoodie > Cc: Jeff King; git@xxxxxxxxxxxxxxx; Johannes Schindelin > Subject: Re: cat-file timing window on Cygwin > > > > On 27/08/17 12:33, Adam Dinwoodie wrote: > > On Sun, Aug 27, 2017 at 03:06:31AM +0100, Ramsay Jones wrote: > >> On 26/08/17 22:11, Adam Dinwoodie wrote: > >>> On Sat, Aug 26, 2017 at 11:53:37AM -0700, Jeff King wrote: > >>>> 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" Tests good on latest snapshot. Fails on Cygwin DLL version info: DLL version: 2.8.2 DLL epoch: 19 DLL old termios: 5 DLL malloc env: 28 Cygwin conv: 181 API major: 0 API minor: 313 Shared data: 5 DLL identifier: cygwin1 Mount registry: 3 Cygwin registry name: Cygwin Installations name: Installations Cygdrive default prefix: Build date: Shared id: cygwin1S5 > >>>> 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?) Using https://cygwin.com/snapshots/x86_64/cygwin-20170823.tar.xz D:\inst\cygwin\cygwin-20170823>usr\bin\bash.exe bash-4.4$ seq 10 | ./a.exe got: 1 got: 2 got: 3 got: 4 got: 5 got: 6 got: 7 got: 8 got: 9 got: 10 bash-4.4$ cat cygcheck.out Cygwin Configuration Diagnostics Current System Time: Sun Aug 27 14:35:25 2017 Windows 10 Professional Ver 10.0 Build 14393 Cygwin DLL version info: DLL version: 2.9.0 DLL epoch: 19 DLL old termios: 5 DLL malloc env: 28 Cygwin conv: 181 API major: 0 API minor: 317 Shared data: 5 DLL identifier: cygwin1 Mount registry: 3 Cygwin registry name: Cygwin Installations name: Installations Cygdrive default prefix: Build date: Snapshot date: 20170823-15:44:28 Shared id: cygwin1S5 bash-4.4$ v/r, Jason Pyeron -- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- - - - Jason Pyeron PD Inc. http://www.pdinc.us - - Principal Consultant 10 West 24th Street #100 - - +1 (443) 269-1555 x333 Baltimore, Maryland 21218 - - - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-