This should be fixed in the current BK tree. And for the non-BK-users,
here's the relevant changeset..
Linus
--- # This is a BitKeeper generated patch for the following project: # Project Name: Linux kernel tree # This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas: # ChangeSet 1.997.1.20 -> 1.997.1.21 # kernel/signal.c 1.67 -> 1.68 # # The following is the BitKeeper ChangeSet Log # -------------------------------------------- # 03/02/11 torvalds@home.transmeta.com 1.997.1.21 # If we set TIF_SIGPENDING for SIGCONT, we have to wake up any sleeping # tasks (even if we don't otherwise need to wake anything up), since # otherwise later signals would see that signals are already pending and # wouldn't cause wakeups. # -------------------------------------------- # diff -Nru a/kernel/signal.c b/kernel/signal.c --- a/kernel/signal.c Tue Feb 11 12:13:43 2003 +++ b/kernel/signal.c Tue Feb 11 12:13:43 2003 @@ -619,6 +619,7 @@ rm_from_queue(SIG_KERNEL_STOP_MASK, &p->signal->shared_pending); t = p; do { + unsigned int state; rm_from_queue(SIG_KERNEL_STOP_MASK, &t->pending); /* @@ -635,9 +636,12 @@ * Wake up the stopped thread _after_ setting * TIF_SIGPENDING */ - if (!sigismember(&t->blocked, SIGCONT)) + state = TASK_STOPPED; + if (!sigismember(&t->blocked, SIGCONT)) { set_tsk_thread_flag(t, TIF_SIGPENDING); - wake_up_state(t, TASK_STOPPED); + state |= TASK_INTERRUPTIBLE; + } + wake_up_state(t, state); t = next_thread(t); } while (t != p);- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/