2002-10-10 17:29:19

by Oleg Nesterov

[permalink] [raw]
Subject: BUG: de_thread()

Hello.

Suppose process P in thread group was cloned _without_
CLONE_DETACHED flag. Then another thread, group_leader
for simplicity, does exec and calls de_thread(). It kills
P via _broadcast_thread_group(). While doing do_exit(),
P skips release_task(), because its exit_signal != -1,
and becomes TASK_ZOMBIE.

Then leader calls schedule() with TASK_UNINTERRUPTIBLE
in while(oldsig->count > 1) {...} and sleeps forever,
because nobody can do wake_up_process(sig->group_exit_task).

Sorry if i missed something, i have no machine to test
development kernel, so i can only speculate looking at
source.

Oleg.