Interesting. The error is occurring during an EPOLL_CTL_MOD operation within the io_loop_handle_add() function. So I am not positive that what you point out is in fact the problem. If it was occurring within the io_loop_handle_remove() function then what you point out might be the case, but thats not where its happening. Unless maybe it is referencing the wrong file descriptor in it's io_list because of a previous file descriptor getting closed unexpectedly. Hmm...
I am surprised nobody else has mentioned this error on the list before. It seems like it would be rather common.
Bill
On Thursday, February 9, 2006 17:56, Václav Haisman said:
Bill Boebel wrote:
imap-login: io_loop_handle_add: epoll_ctl(op=3, fd=10, ret=-1, errno=2): No such file or directory
Could it be that similarly to kqueue on *BSD the Linux kernel unregisters/removes the handle automatically when it gets closed? And that dovecot closes it before unregistering it from epoll?
I don't know enough about epoll to answer that. I do see that in src/lib/ioloop-epoll.c, the "io_loop_handler_init()" function calls this, which sounds related.:
fd_close_on_exec(ctx->epfd, TRUE);
But again, I am not very familiar with the specifics of epoll. Maybe somebody else on this list knows? This means the fd will be closed on exec() but I mean the case where the fd is closed by hand without exec().
And to answer my own question (question/answer 6): http://www.die.net/doc/linux/man/man4/epoll.4.html
I think it might be the cause of the error message.
Thanks, Bill
VH