diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/SteppingController.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/SteppingController.java
index 3ba3357d4ea..ae16af99d9e 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/SteppingController.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/SteppingController.java
@@ -432,9 +432,10 @@ public final class SteppingController {
 		    @Override
 		    protected void handleSuccess() {
 	            fTimedOutFlags.put(execCtx, Boolean.FALSE);
-	            // We shouldn't have a stepping timeout running unless 
-	            // running/stopped events are out of order.
-	            assert !fTimedOutFutures.containsKey(execCtx);
+	            ScheduledFuture<?> currentTimeOutFuture = fTimedOutFutures.get(execCtx);
+	            if (currentTimeOutFuture != null) {
+	            	currentTimeOutFuture.cancel(false);
+	            }
 	            fTimedOutFutures.put(execCtx, getExecutor().schedule(new TimeOutRunnable(execCtx), fStepTimeout, TimeUnit.MILLISECONDS));
 		    }