Properly remove a thread from its wait_objects' waitlist when it is awoken by a timeout.
This commit is contained in:
parent
17b29d8865
commit
406907d570
3 changed files with 11 additions and 2 deletions
|
@ -277,6 +277,10 @@ static void ThreadWakeupCallback(u64 thread_handle, int cycles_late) {
|
|||
|
||||
if (thread->status == THREADSTATUS_WAIT_SYNCH || thread->status == THREADSTATUS_WAIT_ARB) {
|
||||
thread->wait_set_output = false;
|
||||
// Remove the thread from each of its waiting objects' waitlists
|
||||
for (auto& object : thread->wait_objects)
|
||||
object->RemoveWaitingThread(thread.get());
|
||||
thread->wait_objects.clear();
|
||||
thread->SetWaitSynchronizationResult(ResultCode(ErrorDescription::Timeout, ErrorModule::OS,
|
||||
ErrorSummary::StatusChanged,
|
||||
ErrorLevel::Info));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue