--- libev/ev_epoll.c 2007/11/04 18:29:44 1.16 +++ libev/ev_epoll.c 2007/11/04 19:45:09 1.17 @@ -42,7 +42,8 @@ (nev & EV_READ ? EPOLLIN : 0) | (nev & EV_WRITE ? EPOLLOUT : 0); - epoll_ctl (epoll_fd, mode, fd, &ev); + if (!epoll_ctl (epoll_fd, mode, fd, &ev)) + fd_kill (EV_A_ fd); } static void