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
