diff --git a/src/core/tls.h b/src/core/tls.h index 83940be7a..a7b1d6838 100644 --- a/src/core/tls.h +++ b/src/core/tls.h @@ -59,9 +59,11 @@ void ClearStack() { template ReturnType ExecuteGuest(PS4_SYSV_ABI ReturnType (*func)(FuncArgs...), CallArgs&&... args) { - EnsureThreadInitialized(); - // clear stack to avoid trash from EnsureThreadInitialized - ClearStack<12_KB>(); + // clear stack to avoid trash from EnsureThreadInitialized (skip on fiber stacks) + auto* tcb = GetTcbBase(); + if (tcb == nullptr || tcb->tcb_fiber == nullptr) { + ClearStack<12_KB>(); + } return func(std::forward(args)...); }