Multiple attempts at opening same pipe for writing fail

Takashi Yano takashi.yano@nifty.ne.jp
Wed Jun 13 18:14:00 GMT 2018


Hi João,

On Wed, 6 Jun 2018 18:23:08 +0200
João Eiras wrote:
> Howdy.
> 
> I've prepared a testcase for a bug or inconsistency with linux that is
> affecting one of my projects.
> 
> Basically I have a background process that keeps some state always
> running with a pipe open for reading requests.
> 
> Foreground processes that try to open that pipe for writting (to send
> a request) then block/fail on the second and subsequent tries.
> 
> The whole setup can be simplified with a small testcase that runs in a
> single process.
> 
> https://github.com/joaoe/cygwin-pipe-testcase
> 
> I left a README that explains things in a bit more detail.
> 
> To summarize here, consider the following order of events:
> * open pipe for reading with NONBLOCK into FD1 -> OK
> * poll() FD1 -> empty event list, OK
> * read from FD1 -> zero length read, OK
> 
> * open pipe for writting into FD2, write something -> OK
> * poll() FD1 -> POLLIN and POLLPRI, POLLPRI is unexpected here, FAIL
> * read from FD1 -> got stuff that was written
> 
> * close FD2
> * poll() FD1 -> POLLIN and POLLPRI, wrong, should report POLLHUP, FAIL
> * read from FD1 -> zero length read, OK
> 
> * open pipe for writting into FD2 again -> got error ENXIO, FAIL
> 
> So, known bug ? Do you confirm my observations ?
> 
> Any pointers so I could perhaps look into the relevant code ? It seems
> like Cygwin still keeps some dirty state somewhere that tells the pipe
> is still open by a writer somewhere.
> 
> Thank you !

Is this related to https://cygwin.com/ml/cygwin/2017-03/msg00188.html ?

-- 
Takashi Yano <takashi.yano@nifty.ne.jp>

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple



More information about the Cygwin mailing list