diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/Internal/ManagedCallback.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/Internal/ManagedCallback.cs index a5b28e95de..0a3dccc910 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/Internal/ManagedCallback.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/Internal/ManagedCallback.cs @@ -71,6 +71,8 @@ namespace Debugger { EnterCallback(pausedReason, name, pThread.Process); debugger.SelectedProcess.SelectedThread = debugger.GetThread(pThread); + // Remove expired functions from the callstack cache + debugger.SelectedProcess.SelectedThread.CheckExpirationOfFunctions(); } void ExitCallback_Continue() @@ -115,9 +117,6 @@ namespace Debugger thread.Steppers.Remove(stepper); stepper.OnStepComplete(); - // There is a race condition: The tracking step out can be triggered after stepping step over - thread.CheckExpirationOfFunctions(); - if (stepper.PauseWhenComplete) { if (debugger.SelectedThread.LastFunction.HasSymbols) { ExitCallback_Paused();