diff --git a/src/plugins/projectexplorer/outputwindow.cpp b/src/plugins/projectexplorer/outputwindow.cpp
index 809823cd07b3614d47d3c808408f9ae08542e8a9..2a048971791555b2bc22219796931e2d358ccb7f 100644
--- a/src/plugins/projectexplorer/outputwindow.cpp
+++ b/src/plugins/projectexplorer/outputwindow.cpp
@@ -257,9 +257,19 @@ void OutputPane::closeTab(int index)
     RunControl *rc = m_outputWindows.key(ow);
 
     if (rc->isRunning()) {
-        QString msg = tr("The application is still running. Close it first.");
-        QMessageBox::critical(0, tr("Unable to close"), msg);
-        return;
+        QMessageBox messageBox(QMessageBox::Warning,
+                               tr("Unable to close"),
+                               tr("The application is still running."),
+                               QMessageBox::Cancel | QMessageBox::Yes,
+                               ow->window());
+        messageBox.setInformativeText(tr("Force it to quit?"));
+        messageBox.setDefaultButton(QMessageBox::Yes);
+        messageBox.button(QMessageBox::Yes)->setText(tr("Force Quit"));
+
+        if (messageBox.exec() != QMessageBox::Yes)
+            return;
+
+        rc->stop();
     }
 
     m_tabWidget->removeTab(index);
diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h
index cb38d2a32e9b02ebf505bcdde54f87621457ee9c..ea563e4229d11364df008c4f7d04242423be77ec 100644
--- a/src/plugins/projectexplorer/runconfiguration.h
+++ b/src/plugins/projectexplorer/runconfiguration.h
@@ -162,7 +162,7 @@ public:
     explicit RunControl(RunConfiguration *runConfiguration);
     virtual ~RunControl();
     virtual void start() = 0;
-    virtual void stop() = 0;
+    virtual void stop() = 0; // Warning: assumed to be synchroneous!
     virtual bool isRunning() const = 0;
     virtual QString displayName() const;