diff --git a/src/plugins/debugger/debuggeragents.cpp b/src/plugins/debugger/debuggeragents.cpp
index 873ab3575b899b306f0a7f909c8ec878bf101e84..fbdf2180020fc1375408450097c252aa2d573be1 100644
--- a/src/plugins/debugger/debuggeragents.cpp
+++ b/src/plugins/debugger/debuggeragents.cpp
@@ -201,13 +201,17 @@ DisassemblerViewAgent::~DisassemblerViewAgent()
 void DisassemblerViewAgent::cleanup()
 {
     d->cache.clear();
-    if (d->editor)
-        d->editor->markableInterface()->removeMark(d->locationMark);
     //if (d->editor)
     //    d->editor->deleteLater();
     //d->editor = 0;
 }
 
+void DisassemblerViewAgent::resetLocation()
+{
+    if (d->editor)
+        d->editor->markableInterface()->removeMark(d->locationMark);
+}
+
 void DisassemblerViewAgent::setFrame(const StackFrame &frame)
 {
     d->frame = frame;
diff --git a/src/plugins/debugger/debuggeragents.h b/src/plugins/debugger/debuggeragents.h
index d0eba7776e73facdd310866dd9a3f57cf5b1b615..0fbe380e9fb5e88e52b279c97cd53dca149ad5d6 100644
--- a/src/plugins/debugger/debuggeragents.h
+++ b/src/plugins/debugger/debuggeragents.h
@@ -83,6 +83,7 @@ public:
     ~DisassemblerViewAgent();
 
     void setFrame(const StackFrame &frame);
+    void resetLocation();
     Q_SLOT void setContents(const QString &contents);
     QString address() const;
     void cleanup();
diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp
index e141c5746a904ea3914168de3fe206534557caca..e2c99bb5c73ae53ef71b5588f9909bdd795653a7 100644
--- a/src/plugins/debugger/debuggermanager.cpp
+++ b/src/plugins/debugger/debuggermanager.cpp
@@ -1348,6 +1348,8 @@ void DebuggerManager::jumpToLineExec()
 
 void DebuggerManager::resetLocation()
 {
+    d->m_disassemblerViewAgent.resetLocation();
+    d->m_stackHandler->setCurrentIndex(-1);
     // Connected to the plugin.
     emit resetLocationRequested();
 }