[PATCH fifo 0/2] Add support for duplex FIFOs

Ken Brown kbrown@cornell.edu
Fri Mar 29 18:05:00 GMT 2019


On 3/29/2019 3:17 AM, Achim Gratz wrote:
> Ken Brown writes:
>>> I'm pretty sure Ken would be happy about an STC.
>>
>> Yes, please.  Barring that, is there any chance I could see the relevant code,
>> or at least enough of it so that I can see how FIFOs are being used?
> 
> Well, I'm trying -- but got nothing so far.  As the individual FIFO seem
> to work and the error happens pretty early, I think it has something to
> do with either switching between different FIFO (which the original code
> does) or some race between fill and drain, possibly around a buffer
> boundary (in my limited testing it always seemed to happen in the same
> place for the same data).

I found a bug in my fhandler_fifo::raw_write code that could explain the 
problem.  The call to NtWriteFile in that function always returns immediately 
because the Windows named pipe underlying the FIFO is non-blocking.  If it can't 
write because the pipe buffer is full, raw_write returns -1 with error EAGAIN. 
That's wrong if the FIFO was opened in blocking mode.

I'll have to think about how to best handle this.  I think I might be able to 
imitate what's done in fhandler_socket_unix::sendmsg in the topic/af_unix branch.

Ken


More information about the Cygwin-patches mailing list