summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-06-03 17:15:49 +0200
committerGitHub <noreply@github.com>2018-06-03 17:15:49 +0200
commit63270e588b23d44b5a4d780b3d838d1755259a77 (patch)
treee7a8e0de6505d5bf809f154f4825eb6668a9d4b0
parentMerge pull request #497 from Subv/dxn1 (diff)
parentKernel/Threads: A thread waking up by timeout from a WaitProcessWideKey may already have an assigned lock owner. (diff)
downloadyuzu-63270e588b23d44b5a4d780b3d838d1755259a77.tar
yuzu-63270e588b23d44b5a4d780b3d838d1755259a77.tar.gz
yuzu-63270e588b23d44b5a4d780b3d838d1755259a77.tar.bz2
yuzu-63270e588b23d44b5a4d780b3d838d1755259a77.tar.lz
yuzu-63270e588b23d44b5a4d780b3d838d1755259a77.tar.xz
yuzu-63270e588b23d44b5a4d780b3d838d1755259a77.tar.zst
yuzu-63270e588b23d44b5a4d780b3d838d1755259a77.zip
-rw-r--r--src/core/hle/kernel/thread.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp
index 0075e4a0f..cffa7ca83 100644
--- a/src/core/hle/kernel/thread.cpp
+++ b/src/core/hle/kernel/thread.cpp
@@ -133,8 +133,11 @@ static void ThreadWakeupCallback(u64 thread_handle, int cycles_late) {
auto lock_owner = thread->lock_owner;
// Threads waking up by timeout from WaitProcessWideKey do not perform priority inheritance
- // and don't have a lock owner.
- ASSERT(lock_owner == nullptr);
+ // and don't have a lock owner unless SignalProcessWideKey was called first and the thread
+ // wasn't awakened due to the mutex already being acquired.
+ if (lock_owner) {
+ lock_owner->RemoveMutexWaiter(thread);
+ }
}
if (resume)