From help page of epoll_ctl like https://man7.org/linux/man-pages/man2/epoll_ctl.2.html
epoll_wait(2) will always report EPOLLERR despite whether it is set or not when calling epoll_ctl().
The problem of select's POCO_HAVE_FD_EPOLL implementation is,
when constructing the returning socket lists, sockets are not filtered based on the provided lists. Combined with epoll_wait's behaviour, this may return an error socket in the exceptList even calling function provides an empty list for exceptList.
POCO_HAVE_FD_POLL implementation does do filtering based on provided lists.
Seems an issue to me, at least makes the select has different behaviour in different implementations.
From help page of
epoll_ctllike https://man7.org/linux/man-pages/man2/epoll_ctl.2.htmlepoll_wait(2) will always report EPOLLERR despite whether it is set or not when callingepoll_ctl().The problem of
select's POCO_HAVE_FD_EPOLL implementation is,when constructing the returning socket lists, sockets are not filtered based on the provided lists. Combined with
epoll_wait's behaviour, this may return an error socket in theexceptListeven calling function provides an empty list forexceptList.POCO_HAVE_FD_POLL implementation does do filtering based on provided lists.
Seems an issue to me, at least makes the
selecthas different behaviour in different implementations.