Messages in this thread | ![/](/images/icornerl.gif) | | Date | Thu, 19 Jun 2003 18:13:42 +0200 | From | Manfred Spraul <> | Subject | Re: PROBLEM: Bug in __pollwait() can cause select() and poll() to hang in |
| |
Hi Ray,
your bug description seems to be correct, but the fix is wrong: If the allocation is for the 2nd page of wait queue heads, then "current->state = TASK_INTERRUPTIBLE" can lead to lost wakeups, if an fd that is stored in the first page gets ready during the allocation. Setting the state to interruptible is only permitted if a full scan of all file descriptors happens before calling schedule(). This is expensive and should be avoided.
The correct fix is current->state = TASK_RUNNING just before calling yield() in the rebalance code.
-- Manfred
- 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/
| ![\](/images/icornerr.gif) |