Problem about Sparc/solaris10 signal in multi-thread environment

Normally if we send a signal to a process which has several threads, the main thread of this process will handle this signal. But I found in some cases an other thread (not main thread) handled signals even if main thread was alive(mostly main thread was being blocked by __pollsys()).

I want to know why and how this happens.

Thanks.

[354 byte] By [KaiLuo] at [2007-11-14]
# 1

according to man signal.h from a solaris 10 machine ...

Asynchronously generated signals are not directed to

a particular thread but are handled by an arbitrary thread

that meets either of the following conditions:

.... a list of conditions.

So if you have threads that you don't want to take signals, then those threads

must block that signal eg pthread_sigmask()

it is just chance that it usually goes to your "main" thread.

tim

timuglow at 2007-7-6 > top of java,Solaris Operating System,Solaris Essentials - General Technical Questions...