I think I have found the culprit: 
http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/lib/libc/port/threads/sigaction.c

It seems that sigacthandler() is what is called on the alternate stack arranged 
by the kernel. If the sigacthandler() defers the signal, it returns immediately 
to the interrupted code. The libc invokes the scheduled signal later 
(take_deferred_signal()) upon certain events, but this time this is not a 
"signal" invocation but an ordinary function call that happens on the "normal" 
stack.

I think I even know how to fix the problem, but - how do I checkout and 
recompile libc? :)
 
 
This message posted from opensolaris.org
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to