Sorry! I was unclear.
Multiple reasons. Just for example,
1:~$ strace -o /dev/null perl -e 'kill SIGSTOP,$$; for (;;) {}' &
[1] 6714
1:~$ kill -9 $!
[1]+ Killed strace -o /dev/null perl -e 'kill SIGSTOP,$$; for (;;) {}'
1:~$ grep State: /proc/`pidof perl`/status
State: R (running)
but its signal->flags = SIGNAL_STOP_STOPPED.
Please note that unless SIGCONT comes it will exit() with SIGNAL_STOP_STOPPED
set too, this complicates fixing do_wait(WSTOPPED). We can shadow this problem
though, do_wait() can first check TASK_ZOMBIE, and only then SIGNAL_STOP_STOPPED.
I am going to try to cook some patches soon.
Yes. Somehow the conception of orphaned pgrp doesn't fit in my brain, but I'd
like to at least try to think about this...
Oleg.
--