problem with poll_poll() under FreeBSD
Zajcev Evgeny
lg.zevlg at gmail.com
Fri Mar 26 08:44:31 CET 2010
Marc Lehmann <schmorp at schmorp.de> writes:
> On Thu, Mar 25, 2010 at 04:53:02PM +0300, Zajcev Evgeny <lg.zevlg at gmail.com> wrote:
>> at the for time `polls' looks like this:
>> {fd = 3, events = 1, revents = 0}
>> {fd = 6, events = 5, revents = 4}
>> {fd = 775043377, events = 13873, revents = 11832} (**)
>> ...
>> i don't know `res' value, but i suppose it was 2.
>
> The value of res would be helpful. If res is two, then this is a kernel
> bug that you should report (or maybe upgrade to a fixed version), not a
> bug in libev.
>
>> of course this situation is incorrect for the code above, because `p'
>> will eventually point to (**) uninitialized record (but present in
>> memory).
>
> Only if poll returns an illegal return code.
>
>> So, i think `res' must decrease in conjunction with `p' increasement,
>> like this:
>
> Then we would miss events, as not all poll structs have events, and we
> would only look at the first "res", and not all with nonzero result code.
>
>> for (p = polls; res--; ++p)
>
>> what do you think?
>
> All depends on what res is. If res is two, then this is clearly a kernel
> bug.
aha, i will investigate futher and report. i've heard from others
they have glitches with FreeBSD's poll too
thanks for your help Marc
[..]
--
lg
More information about the libev
mailing list