SIGCHLD not received

Denis Bilenko denis.bilenko at gmail.com
Mon Jul 23 10:15:57 CEST 2012


On Thu, May 31, 2012 at 10:32 PM, Denis Bilenko <denis.bilenko at gmail.com> wrote:
> On Thu, May 31, 2012 at 9:13 PM, Marc Lehmann <schmorp at schmorp.de> wrote:
>>> The SIGCHLD is received, of course, but then libev fails to notify the
>>> child watcher in a timely manner. Instead, it delays the notification
>>> by 60 seconds (MAX_BLOCKTIME).
>>
>> I'll have a look, however, from looking at it, the test will always fail
>> if the system is busy enough, and libev doesn't lose the signal, so
>> behaviour is essentially correct. I'll see if this case can be optimised
>> without drawback for other cases.
>
> Cool, thanks.
>
> There's another issue, in which libev does lose the signal forever. To
> reproduce it, remove sleep(1) from the latest test program.
>
> The source of the issue is a race condition between ev_feed_signal and
> loop_fork(). If I block signals at the beginning of loop_fork() and
> unblock them at the end I have it fixed.

Marc, what's your resolution on this? Do you acknowledge this to be a
bug in libev? Do you need help with fixing it?

I'm asking about the issue where the event is lost forever, not the
one where it's delayed for MAX_BLOCKTIME time.



More information about the libev mailing list