I ll be able to check it in like 12 hours. Thanks !
 On Jul 19, 2013 8:28 AM, "Nick Mathewson" <ni...@freehaven.net> wrote:

> On Fri, Jul 19, 2013 at 9:31 AM, Oleg Moskalenko <mom040...@gmail.com>
> wrote:
> > Thank you Azat for the suggestion. It seems to me that UDP sockets are
> > offenders, somehow it happens only in Linux (I know Linux has some weird
> UDP
> > behavior):
> >
> > Process 20828 attached with 5 threads - interrupt to quit
> > [pid 20831] clock_gettime(CLOCK_MONOTONIC,  <unfinished ...>
> > [pid 20832] clock_gettime(CLOCK_MONOTONIC,  <unfinished ...>
> > [pid 20831] <... clock_gettime resumed> {205614, 271115090}) = 0
> > [pid 20831] gettimeofday( <unfinished ...>
> > [pid 20832] <... clock_gettime resumed> {205614, 271926086}) = 0
> > [pid 20831] <... gettimeofday resumed> {1374240484, 377784}, NULL) = 0
> > [pid 20832] gettimeofday( <unfinished ...>
> > [pid 20831] epoll_wait(20,  <unfinished ...>
> > [pid 20829] clock_gettime(CLOCK_MONOTONIC,  <unfinished ...>
> > [pid 20830] clock_gettime(CLOCK_MONOTONIC,  <unfinished ...>
> > [pid 20832] <... gettimeofday resumed> {1374240484, 378418}, NULL) = 0
> > [pid 20832] epoll_wait(16,  <unfinished ...>
> > [pid 20830] <... clock_gettime resumed> {205614, 273231001}) = 0
> > [pid 20829] <... clock_gettime resumed> {205614, 272801617}) = 0
> > [pid 20829] gettimeofday( <unfinished ...>
> > [pid 20830] gettimeofday( <unfinished ...>
> > [pid 20829] <... gettimeofday resumed> {1374240484, 379094}, NULL) = 0
> > [pid 20829] epoll_wait(28,  <unfinished ...>
> > [pid 20830] <... gettimeofday resumed> {1374240484, 379317}, NULL) = 0
> > [pid 20830] epoll_wait(24,  <unfinished ...>
> > [pid 20828] recvfrom(8, 0x7fff61df20c0, 4, 2, 0xa9bc20, 0x7fff61df20bc)
> = -1
> > EAGAIN (Resource temporarily unavailable)
> > [pid 20828] epoll_wait(4, {{EPOLLERR, {u32=8, u64=8}}}, 32, 19) = 1
> > [pid 20828] clock_gettime(CLOCK_MONOTONIC, {205614, 277088474}) = 0
> > [pid 20828] gettimeofday({1374240484, 386338}, NULL) = 0
> > [pid 20828] recvfrom(8, 0x7fff61df20c0, 4, 2, 0xa9bc20, 0x7fff61df20bc)
> = -1
> > EAGAIN (Resource temporarily unavailable)
> > [pid 20828] epoll_wait(4, {{EPOLLERR, {u32=8, u64=8}}}, 32, 12) = 1
> > [pid 20828] clock_gettime(CLOCK_MONOTONIC, {205614, 286419826}) = 0
> > [pid 20828] gettimeofday({1374240484, 392232}, NULL) = 0
> > [pid 20828] recvfrom(8, 0x7fff61df20c0, 4, 2, 0xa9bc20, 0x7fff61df20bc)
> = -1
>
> Hm. So, epoll_wait is reporting EPOLLERR on fd 8.  The Libevent
> epoll.c code treats EPOLLERR as (EV_READ|EV_WRITE).  But when you
> recvfrom on the socket, it only says EAGAIN.
>
> So your program sensibly decides to keep listening for events on fd 8,
> and epoll keeps telling you that there was an error.
>
> Assuming that this recvfrom is in your code, I'll echo Vsevolod's
> question: what happens when you call getsockopt(...SO_ERROR...)  on
> the socket in the event handler that calls the recvfrom, to see what
> the queued error is?
>
> --
> Nick
> ***********************************************************************
> To unsubscribe, send an e-mail to majord...@freehaven.net with
> unsubscribe libevent-users    in the body.
>

Reply via email to