diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp
index 5acc6e739414d42c7e710f0c06145405e61ba98d..095fc78cf50fde0a0e9a637036d76b0559db3202 100644
--- a/src/plugins/debugger/debuggerengine.cpp
+++ b/src/plugins/debugger/debuggerengine.cpp
@@ -1389,11 +1389,7 @@ void DebuggerEngine::notifyEngineShutdownOk()
     showMessage(_("NOTE: ENGINE SHUTDOWN OK"));
     QTC_ASSERT(state() == EngineShutdownRequested, qDebug() << state());
     setState(EngineShutdownOk);
-    if (isSlaveEngine()) {
-        setState(DebuggerFinished); // WHY?
-    } else {
-        d->queueFinishDebugger();
-    }
+    d->queueFinishDebugger();
 }
 
 void DebuggerEngine::notifyEngineShutdownFailed()
@@ -1401,11 +1397,7 @@ void DebuggerEngine::notifyEngineShutdownFailed()
     showMessage(_("NOTE: ENGINE SHUTDOWN FAILED"));
     QTC_ASSERT(state() == EngineShutdownRequested, qDebug() << state());
     setState(EngineShutdownFailed);
-    if (isSlaveEngine()) {
-        setState(DebuggerFinished);  // WHY?
-    } else {
-        d->queueFinishDebugger();
-    }
+    d->queueFinishDebugger();
 }
 
 void DebuggerEnginePrivate::doFinishDebugger()
@@ -1494,8 +1486,10 @@ void DebuggerEngine::setState(DebuggerState state, bool forced)
 
 void DebuggerEngine::updateViews()
 {
-    // FIXME: This should not be done for slave engines.
-    plugin()->updateState(this);
+    // The slave engines are not entitled to change the view. Their wishes
+    // should be coordinated by their master engine.
+    if (isSlaveEngine())
+        plugin()->updateState(this);
 }
 
 bool DebuggerEngine::isSlaveEngine() const