http://bugs.winehq.org/show_bug.cgi?id=14195
--- Comment #9 from Alexandre Julliard julliard@winehq.org 2009-01-20 06:13:12 --- (In reply to comment #8)
(In reply to comment #7)
The patch is wrong, you can't just restart the poll, you need to update the timeout.
Wine already have such ignorance without timeout recalculation.
static inline int do_block( int fd, int events, int timeout )
Yes that one is wrong too, but it's always called with -1 so that's not a problem in practice. Feel free to send a patch removing the timeout arg.
I do not think that timeout recalculation is really necessary. This situation very rare. If we do not recalculate timeout, we would have just a bit longer timeout in very rare cases. The timeout is not so explicit requierments for most cases. On timeout recalculation, we would pay by one more system call to get system time before call "poll".
Do you really stand on timeout recalculation ?
Yes of course. If we followed your reasoning we could also argue that EINTR happening in that poll is a rare case and that we don't need to fix it. But as this bug shows, rare cases do happen.