diff --git a/src/system/kernel/condition_variable.cpp b/src/system/kernel/condition_variable.cpp index a2c1bc898b..0bab6af682 100644 --- a/src/system/kernel/condition_variable.cpp +++ b/src/system/kernel/condition_variable.cpp @@ -162,6 +162,12 @@ PrivateConditionVariableEntry::Wait(uint32 flags) && (thread->sig_pending & ~thread->sig_block_mask) != 0) || ((flags & B_KILL_CAN_INTERRUPT) && (thread->sig_pending & KILL_SIGNALS))) { + // remove all of the thread's entries from their variables + entry = firstEntry; + while (entry) { + entry->_Remove(); + entry = entry->fThreadNext; + } return B_INTERRUPTED; }