From 232b1012b0c981830ac46bd5024dcc0e35075301 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Thu, 23 Jun 2022 21:53:16 -0300 Subject: Fix ThreadingLock deadlock on invalid access and TerminateProcess (#3407) --- Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs') diff --git a/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs b/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs index d01c3e3b..4c95821c 100644 --- a/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs +++ b/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs @@ -966,6 +966,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Process SignalExitToDebugExited(); SignalExit(); } + + KernelStatic.GetCurrentThread().Exit(); } private void UnpauseAndTerminateAllThreadsExcept(KThread currentThread) @@ -981,7 +983,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process foreach (KThread thread in _threads) { - if ((thread.SchedFlags & ThreadSchedState.LowMask) != ThreadSchedState.TerminationPending) + if (thread != currentThread && (thread.SchedFlags & ThreadSchedState.LowMask) != ThreadSchedState.TerminationPending) { thread.PrepareForTermination(); } -- cgit v1.2.3