On Mon, Jul 23, 2012 at 1:24 PM, Marc Lehmann <[email protected]> wrote: > Hmm, it's been a long time - what exactly is the behaviour I am supposed to > see from the program without the sleep, and what behaviour do you get?
Here's the program with sleep removed (no further changes necessary), just tested it against libev in CVS: https://gist.github.com/3168594 Actual output: denis@ubuntu:~/work/libev-cvs$ ./testsigchld5 *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.Alarm clock Expected output: *. goes on infinitely >> 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. > Can you explain the mechanism or nature of that race condition? in loop_fork() you call ev_io_stop (EV_A_ &pipe_w); // signal delivered right here in ev_feed_signal() you check if (!ev_active (&pipe_w)) return; thus ev_feed_signal() handler becomes noop. >> Do you acknowledge this to be a bug in libev? > > If it is a bug, I will of course acknowledge it - that's a weird question > to ask(?). It's a very real question, depending on the answer I either can continue to use stock libev or have to maintain my own slightly modified branch, which is a nuisance. > >> Do you need help with fixing it? > > I need help understanding it, to see if it's really a bug - keep in mind > that you made a lot of invalid reports, and it takes time to sift through > all and find out if there really is an issue. Just use the last test program (in this email). _______________________________________________ libev mailing list [email protected] http://lists.schmorp.de/cgi-bin/mailman/listinfo/libev
