select() states non-blocking pipe is readable, read() returns EAGAIN in RHEL5
Issue
- On two cluster nodes, we had two winbindd processes running in a 100% CPU cycle.
-
strace'ing revealed the following:
select(1033, [7 9 774 1024 1025 1026 1027 1029 1032], [1031], NULL, {12817, 174879}) = 6 (in [7 1024 1025 1026 1027 1029], left {12817, 174879}) read(7, 0x7fff684702f0, 16) = -1 EAGAIN (Resource temporarily unavailable) select(1033, [7 9 774 1024 1025 1026 1027 1029 1032], [1031], NULL, {12817, 174745}) = 6 (in [7 1024 1025 1026 1027 1029], left {12817, 174745}) read(7, 0x7fff684702f0, 16) = -1 EAGAIN (Resource temporarily unavailable) -
This went on indefinitely. select() gave back, that fd #7 is readable. But trying to read() from it fails.
Environment
- Red Hat Enterprise Linux 5
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.