マルチスレッド環境でのシグナル

os_unix.c の mch_suspend() より。

    kill(0, SIGTSTP);	    /* send ourselves a STOP signal */
# ifdef _REENTRANT
    /* When we didn't suspend immediately in the kill(), do it now.  Happens
     * on multi-threaded Solaris. */
    if (!sigcont_received)
	pause();

Makefile より。

### (W) Solaris with multi-threaded libraries (-lthread):
###^    If suspending doesn't work properly, try using this line:
#EXTRA_DEFS = -D_REENTRANT

マルチスレッド環境では、自分自身に kill しても、そのシグナルが届く前に次の行が実行されてしまう場合があるということですかな。