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