aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2022-06-23 21:53:16 -0300
committerGitHub <noreply@github.com>2022-06-24 02:53:16 +0200
commit232b1012b0c981830ac46bd5024dcc0e35075301 (patch)
tree6f8fb1136e3eaf5a472e67c969ef69d27975e259 /Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs
parente747f5cd836b73661414134b182fc50121e56865 (diff)
Fix ThreadingLock deadlock on invalid access and TerminateProcess (#3407)1.1.155
Diffstat (limited to 'Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs')
-rw-r--r--Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs4
1 files changed, 3 insertions, 1 deletions
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();
}