valgrind stuff

Brandon Black blblack at gmail.com
Thu Apr 10 01:15:27 CEST 2008


Marc Lehmann wrote:
>>>> http://lists.freedesktop.org/archives/dbus/2006-September/005724.html
> 
> In case anyone wonders, quoting from gnu/linux manpages is a very bad
> idea, they are often very wrong and in contradiciton to both reality and
> the unix specification.
> 
> The unix specification says:
> 
>    In each pollfd structure, poll() clears the revents member except that
>    where the application requested a report on a condition by setting one
>    of the bits of events listed above, poll() sets the corresponding bit
>    in revents if the requested condition is true.
> 
>    If none of the defined events have occurred on any selected file
>    descriptor, poll() waits at least timeout milliseconds for an event to
>    occur on any of the selected file descriptors.
> 
> Without contradiction, revents *is* cleared by any successful call to poll.
> 
>    Upon successful completion, poll() returns a non-negative value. 
> 
> A return value of 0 is non-negative, and therefore the call was successful.
> 
> Again, one should report this as a bug in valgrind, flagging correct
> programs is a bug in valgrind, and nothing else.
> 
> And so far, I have seen zero evidence for this beign a problem in
> practise, although I admit I haven't tested this very widely. However,
> even if real systems do not implement poll like above, this is likely a
> bug in those systems as well (as usually they follow sus), and should be
> reported.
> 
> I am strictly against implementing kludges on top of bugs instead of
> fixing them, whenever possible.
> 

Regardless, if poll() returns zero there's no point in examining revents 
anyways right?  That makes the whole issue moot.  If anything you gain 
some performance by not scanning the poll_fd's in the case of a timeout 
with no events occuring.

-- Brandon



More information about the libev mailing list