BUG: select(2) doesn't wait with O_RDONLY pipe

Dave Broudy (shaggy@broudy.net)
Sun, 3 Oct 1999 21:06:30 -0400 (EDT)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

---1496215386-1197046629-938999190=:22965
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hello,

I think there may be a bug when using select() to wait on a fd that was
open()'d with O_RDONLY and O_NONBLOCK. select waits on the pipe the first
time, but once data is writen to the pipe (echo stuff > pipe) and
subsequently read(), select() never waits again, and read() returns 0
until the program is killed. If I open() the pipe with O_RDWR, everything
works fine.

I've tried this on the following kernel versions:

2.2.12 x86 SMP: FAILED
2.0.31 x86: FAILED
2.2.10 SPARC: PASSED

The code that I produced this with is attached.

I'm not subscribed to linux-kernel, so please CC me if there is any
response to this.

Thanks,

Dave Broudy dave@broudy.net

---1496215386-1197046629-938999190=:22965
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="readpipe.c"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.96.991003210630.22965B@guild.net>
Content-Description:

I2luY2x1ZGUgPHN5cy90eXBlcy5oPg0KI2luY2x1ZGUgPHN5cy9zdGF0Lmg+
DQojaW5jbHVkZSA8c3RkaW8uaD4NCiNpbmNsdWRlIDx1bmlzdGQuaD4NCiNp
bmNsdWRlIDxmY250bC5oPg0KI2luY2x1ZGUgPHN0cmluZy5oPg0KI2luY2x1
ZGUgPGVycm5vLmg+DQoNCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2
W10pIHsNCglpbnQgcmVzdWx0Ow0KCWludCBmZDsNCglmZF9zZXQgZmRzZXQ7
DQoJY2hhciBzdHJbMjU1XTsNCgkNCglpZiAoYXJnYyA8IDIpIHsNCgkJZnBy
aW50ZihzdGRlcnIsICJVc2FnZTogJXMgcGlwZVxuIiwgYXJndlswXSk7DQoJ
CWV4aXQoLTEpOw0KCX0NCgkNCgkvKiBPX1JET05MWSBicmVha3MsIE9fUkRX
UiB3b3JrcyBmaW5lICovDQoJZmQgPSBvcGVuKGFyZ3ZbMV0sIE9fUkRPTkxZ
IHwgT19OT05CTE9DSyk7DQoJLy9mZCA9IG9wZW4oYXJndlsxXSwgT19SRFdS
IHwgT19OT05CTE9DSyk7DQoJaWYgKGZkID09IC0xKSB7DQoJCWZwcmludGYo
c3RkZXJyLCAiJXM6IG9wZW4oKTogJXNcbiIsIGFyZ3ZbMF0sIHN0cmVycm9y
KGVycm5vKSk7DQoJCWV4aXQoLTEpOw0KCX0NCg0KCUZEX1pFUk8oJmZkc2V0
KTsNCglGRF9TRVQoZmQsICZmZHNldCk7DQoNCglmb3IgKDs7KSB7DQoJCXJl
c3VsdCA9IHNlbGVjdChmZCsxLCAmZmRzZXQsIDAsIDAsIE5VTEwpOw0KCQlp
ZiAocmVzdWx0ID09IC0xKSB7DQoJCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBz
ZWxlY3QoKTogJXNcbiIsIGFyZ3ZbMF0sIHN0cmVycm9yKGVycm5vKSk7DQoJ
CQlleGl0KC0xKTsNCgkJfQ0KDQoJCWlmIChGRF9JU1NFVChmZCwgJmZkc2V0
KSkgew0KCQkJcmVzdWx0ID0gcmVhZChmZCwgc3RyLCAyNTQpOw0KCQkJaWYg
KHJlc3VsdCA9PSAtMSkgew0KCQkJCWZwcmludGYoc3RkZXJyLCAiJXM6IHJl
YWQoKTogJXNcbiIsDQoJCQkJCQlhcmd2WzBdLCBzdHJlcnJvcihlcnJubykp
Ow0KCQkJCXJldHVybiAtMTsNCgkJCX0gZWxzZSBpZiAocmVzdWx0ID4gMCkg
ew0KCQkJCXN0cltyZXN1bHRdID0gJ1wwJzsNCgkJCQlwcmludGYoIlJFQUQ6
ICVzIiwgc3RyKTsNCgkJCX0gZWxzZSBpZiAocmVzdWx0ID09IDApIHsNCgkJ
CQlmcHJpbnRmKHN0ZGVyciwgIldlIHNob3VsZG4ndCBiZSBoZXJlIGFnYWlu
Li4uXG4iKTsNCgkJCX0NCgkJfQ0KCX0NCgljbG9zZShmZCk7DQoJcmV0dXJu
IDA7DQp9DQo=
---1496215386-1197046629-938999190=:22965--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/