missing a wakeup from pending signal

William Chow (lilbilchow@yahoo.com)
Thu, 13 Feb 2003 19:35:43 -0800 (PST)


I am finding that my kernel thread will occasionally
fail to wake up eventhough it has a signal pending.
The thread is calling wait_event_interruptible and
waiting for SIGIO (from the sg driver). I only see it
fail to wake up when performing intensive sg activity.
(sigpending==1 and pending.signal.sig[0]==0x10000000).

So, I was just wondering if anyone was aware of a fix
(I'm using 2.4.18 on i386). A google search failed to
turn up anything obvious. My code is pretty basic
stuff but here the wait loop just in case:

for (;;) {
gotsig = wait_event_interruptible();
if (gotsig) {
sigemptyset(&set);
spin_lock_irq(&current->sigmask_lock);
signum = dequeue_signal(&set, &info);
spin_unlock_irq(&current->sigmask_lock);
if (signum != SIGIO)
break;
process_io();
}
}

Please CC me in the response. Thanks in advance.

__________________________________________________
Do you Yahoo!?
Yahoo! Shopping - Send Flowers for Valentine's Day
http://shopping.yahoo.com
-
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/