RHEL6: Why do the poll routines fail to set EPOLLOUT under some conditions for TCP connections?
Issue
- We have written some network code using epoll and have noticed that for the standard RHEL 6.x is does not work as expected. RHEL 7.* and MRG seems to work correctly
- A program that tries to connect() to non existent port via the loopback device demonstrates this. It calls epoll_wait() that returns without the EPOLLOUT bit set on RHEL6.
- For RHEL7
flags = IN OUT HUP ERR
socket is writable, hurrah!
- For RHEL6:
flags = IN HUP ERR
socket is NOT writable, oh dear...
Environment
- Red Hat Enterprise Linux.
- All RHEL6 releases up RHEL 6.7.
- All RHEL7 releases have the fix.
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.