libev 3.8 threads & signals
common at gmx.ch
common at gmx.ch
Fri Sep 25 10:46:15 CEST 2009
Marc Lehmann wrote:
> On Thu, Sep 24, 2009 at 03:31:30PM +0200, "common at gmx.ch" <common at 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
More information about the libev
mailing list