missing a wakeup from pending signal

From: William Chow (lilbilchow@yahoo.com)
Date: Thu Feb 13 2003 - 22:35:43 EST


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.
>From kdb, the task shows the signal was delivered
(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/



This archive was generated by hypermail 2b29 : Sat Feb 15 2003 - 22:00:51 EST