tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Signal handling after SIGCONT, PR/39814 related



Hello,

While fixing PR/39814, I found few signal handling differences between
NetBSD and (Open)Solaris with Linux. Originally, PR covers the behaviour
change between 4.0 and 5.0, when any termination signal (eg. SIGUSR1)
kills the stopped process. Patch to restore it:

http://www.netbsd.org/~rmind/kern_sig.diff

However, unlike NetBSD, both Linux and (Open)Solaris do not process SIGKILL
until SIGCONT is sent. Also, if parent process does SIGSTOP + SIGUSR1 and
wait(), function blocks (because there was no SIGCONT yet) in all systems.
But in a case of SIGSTOP + SIGKILL + wait(), in Solaris and Linux, function
returns and child exits (note that child is alive after SIGKILL, that is,
kill(child_pid, 0) == 0 is true), while in NetBSD it blocks.

POSIX does not clearly define this:

http://www.opengroup.org/onlinepubs/000095399/functions/wait.html

Comments?

-- 
Best regards,
Mindaugas


Home | Main Index | Thread Index | Old Index