GNU bug report logs -
#32943
grep pattern < fifo fails on Cygwin (and MinGW), but not on Linux
Previous Next
Reported by: Houder <houder <at> xs4all.nl>
Date: Fri, 5 Oct 2018 10:15:01 UTC
Severity: normal
Done: Paul Eggert <eggert <at> cs.ucla.edu>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
On 2018-10-08 17:49, Paul Eggert wrote:
> On 10/8/18 12:35 AM, Houder wrote:
>> grep terminates with an error on Cygwin because lseek() on Cygwin
>> fails to
>> ascertain that it is applied to a FIFO.
>
>
> That sounds like a bug in Cygwin, then. Can you find out exactly why
> it occurs, by using GDB within Cygwin? Then you can file a bug report
> with the Cygwin folks.
Yes, it _is_ a bug in cywin1.dll (i.e. the executive). No, I cannot find
out _exactly_ why it occurs (see below). A "bug report" has been filed,
Cygwin has no official bug tracker. A bug is reported on the
mailinglist.
I have reported my findings here:
https://cygwin.com/ml/cygwin/2018-10/msg00062.html
E. Blake, one of members on your list, has already acknowledged that the
Cygwin executive must be fixed.
> Possibly the bug is something like the following: grep calls lseek
> (fd, 0, SEEK_CUR). The Cygwin lseek implementation asks MS-Windows
> what the file offset is, gets an error because the file descriptor is
> that of a pipe, and somehow turns that into EINVAL. Cygwin should turn
> it into ESPIPE instead.
Cygwin has been written in C++ (it would take me a very long time to get
familiar with the implementation).
lseek() is implemented in winsup/cygwin/syscalls.cc. The "real" lseek()
however is implemented in one of the many "handlers", depending on the
device type on which lseek() is applied (I am guessing).
Apparently, "nothing" has been implemented for a fifo, and as result
of that the basic handler fhandler_base::lseek() in
winsup/cygwin/fhandler.cc (1031) is invoked.
Here NtQueryInformationFile() is called, which fails with
ERROR_INVALID_PARAMETER (87), which Cygwin turns into EINVAL (22).
We have to wait until Corinna Vinschen returns from holidays (end of
october), because Corinna Vinschen is the only one who can deal with
the executive.
Regards,
Henri
This bug report was last modified 5 years and 135 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.