Re: epoll gives broken results when interrupted with a signal

From: Davide Libenzi
Date: Wed Oct 29 2003 - 12:28:17 EST


On Wed, 29 Oct 2003, Ben Mansell wrote:

> I'm using the epoll system interface on a 2.6.0-test9 kernel, but I hit
> a problem if the process calling epoll_wait() gets interrupted. The
> epoll_wait() returns with several events, but the last event of which
> contains junk (e.g. typically reports that a file descriptor like
> -91534560 received an event)
>
> The epoll is being used to monitor only a handful of file descriptors.
> Some of these however are TCP network sockets that were bound to a port
> by a parent process, and then passed on to the process doing the epoll.
> Another file descriptor is that of a socket connected to the parent
> process. The epoll failure is brought about when the parent process
> tries to kill off the child with a SIGTERM. The parent then exits.
>
> The final (interrupted) epoll returns two events - the first is that of
> the socket to the dead parent, receiving EPOLLIN | EPOLLHUP, which seems
> reasonable. The next event is then random garbage. Perhaps epoll is just
> returning one too many results?

Is it an UP or an SMP machine? The descriptor is passed how? fork? If I'll
send you a debug patch for epoll will you be able to run it?



- Davide

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/