On Mon, 10 Feb 2003, Ingo Molnar wrote:> > > Interesting. Especially as the last thing exit_notify() does (just a few> > lines above the schedule()) is to do> > > > tsk->state = TASK_ZOMBIE;> > > > and that schedule() _really_ really shouldn't return. Regardless of any> > signal handler changes.> > the proper way to avoid such scenarios (besides removing tasks from all> waitqueues) is to remove the thread from all the PID-hashes prior setting> it to TASK_ZOMBIE.

Not a good idea.

We still want to find zombie processes, since they show up in "ps" listings etc. And I don't think sending a signal to a zombie processshould return ESRCH, since it's there.

Btw, I fixed it by making all wake-up events give a mask of which states can be woken up. That's really what SIGCONT wanted anyway (only wake up stopped tasks), _and_ it's what default_wake_function() really wanted.