On Mon, 2017-08-28 at 13:38 +0300, Alexander Kanavin wrote: > On 08/27/2017 07:07 PM, Richard Purdie wrote: > > > > > > > > > > > > > On 08/22/2017 09:46 PM, Trevor Woerner wrote: > > > > > > > > > > $ strace -p 43675 > > > Process 43675 attached > > > read(1025, > > And the answer is staring me in the face. select() only supports > > FDs up > > to 1024. 1025 > 1024 which is > FD_SETSIZE. > > > > Therefore pseudo hangs when we run into large numbers of fds :/. > > > > https://access.redhat.com/solutions/488623 > > > > So I think we might at least understand what is breaking. It may be > > using poll/epoll would work instead? > What I don't understand is how exceeding the fd limit in select() > leadsĀ > to read() that never finishes. Can you clarify the sequence please?
The bitfield operation that says "can I read this fd?" probably overflows into the next data item in the structure (I haven't checked exactly how it fails). It may be "set", certainly the case I debugged had to have thought it was and the code thinks "fd 1025 is ready for reading" when in fact it may not be. The code then calls read() on it and if it wasn't ready for reading, it would block. Cheers, Richard -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
