Marc Lehmann wrote:
On Thu, Sep 24, 2009 at 03:31:30PM +0200, "com...@gmx.ch" <com...@gmx.ch> wrote:
I have a g_thread_pool and libev, following pseudocode

I don't know what g_thread_pool does, but if it messes with the signal
mask, then it should just not do that, at elast not for signals you register
with libev.

libev (just like any other event loop) requires you to not touch resources
it manages, which includes SIGCHLD and any signal handler you install via it.

If something else in your program messes with those signals in any way, then
either that part is broken, or the part that installs the signal watcher in
libev.

These resources are simply nto sharable, as much as we'd like them to be.
Only one can manage it, which is why libev allows you to multiplex all
those signals.


You are right, g_thread_pool messes up the signals.

rt_sigprocmask(SIG_BLOCK, [INT CHLD], NULL, 8) = 0
syscall_289(0x5, 0x7fbf0d0606b0, 0x8, 0, 0x98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) = 0x5
rt_sigprocmask(SIG_BLOCK, [HUP INT CHLD], NULL, 8) = 0
syscall_289(0x5, 0x7fbf0d0606b0, 0x8, 0, 0x5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) = 0x5

Thanks for reply.

Markus

_______________________________________________
libev mailing list
libev@lists.schmorp.de
http://lists.schmorp.de/cgi-bin/mailman/listinfo/libev

Reply via email to