diff --git a/Core/HLE/sceKernelThread.cpp b/Core/HLE/sceKernelThread.cpp index 38c7e691e8..16f1256294 100644 --- a/Core/HLE/sceKernelThread.cpp +++ b/Core/HLE/sceKernelThread.cpp @@ -1614,7 +1614,9 @@ int sceKernelStartThread(SceUID threadToStartID, u32 argSize, u32 argBlockPtr) // TODO: Maybe this happens even for worse-priority started threads? dispatchEnabled = true; - __KernelChangeReadyState(currentThread, true); + if (cur && cur->isRunning()) + cur->nt.status &= ~THREADSTATUS_RUNNING; + __KernelChangeReadyState(cur, currentThread, true); hleReSchedule("thread started"); } else if (!dispatchEnabled)