Print

Print


It is possible for Linux (and only Linux) to return EPOLLHUP + EPOLLIN when calling epoll_wait(). Unformtuantely,, XrdSysIOEvents first checks EPOLLIN and decides that everything is OK when, in fact, it is not because EPOLLHUP is also set. The subsequent read will then return EAGAIN going back to epoll_wait(); creating a loop. Eventually, the loop resolves itself when the socket is actually closed on the other end. However, that may take a while. The solution is to make sure no other "bad" bits are set when epoll_wait() indicates a socket is ready to read from. This appears to be a known issue and has hit other epoll event handlers out in the field.


Reply to this email directly or view it on GitHub.



Use REPLY-ALL to reply to list

To unsubscribe from the XROOTD-DEV list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=XROOTD-DEV&A=1