Happens on Linux - in order to interrupt epoll_wait() sleep, PolSet::wakeup() writes to a dummy fd, which is never read and remains signaled forever. The result is that epoll_wait timeout stops working after the first wakeUp() call (ie. epoll_wait() immediately returns 1, but PollSet::poll() returns empty mode map).