diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp
index 3c6e210ce13d50f5b1e6f3910842539f244a82cd..e355de2de0d6ae559471e6250e1bdf3af1620b62 100644
--- a/src/plugins/debugger/debuggerengine.cpp
+++ b/src/plugins/debugger/debuggerengine.cpp
@@ -246,6 +246,7 @@ public slots:
     void scheduleResetLocation()
     {
         m_stackHandler.scheduleResetLocation();
+        m_disassemblerAgent.scheduleResetLocation();
         m_locationTimer.setSingleShot(true);
         m_locationTimer.start(80);
     }
diff --git a/src/plugins/debugger/disassembleragent.cpp b/src/plugins/debugger/disassembleragent.cpp
index fa8f91d2e03eb05f5317f31149aaf0c93692d212..5b354aa1eaf4181f38137f8121a9f474e32e5ed7 100644
--- a/src/plugins/debugger/disassembleragent.cpp
+++ b/src/plugins/debugger/disassembleragent.cpp
@@ -117,13 +117,15 @@ public:
     
     QHash<QString, DisassemblerLines> cache;
     QString mimeType;
+    bool m_resetLocationScheduled;
 };
 
 DisassemblerAgentPrivate::DisassemblerAgentPrivate()
   : editor(0),
     tryMixed(true),
     locationMark(new LocationMark2),
-    mimeType(_("text/x-qtcreator-generic-asm"))
+    mimeType(_("text/x-qtcreator-generic-asm")),
+    m_resetLocationScheduled(false)
 {
 }
 
@@ -162,11 +164,19 @@ void DisassemblerAgent::cleanup()
     d->cache.clear();
 }
 
+void DisassemblerAgent::scheduleResetLocation()
+{
+    d->m_resetLocationScheduled = true;
+}
+
 void DisassemblerAgent::resetLocation()
 {
     if (!d->editor)
         return;
-    d->editor->markableInterface()->removeMark(d->locationMark);
+    if (d->m_resetLocationScheduled) {
+        d->m_resetLocationScheduled = false;
+        d->editor->markableInterface()->removeMark(d->locationMark);
+    }
 }
 
 static QString frameKey(const Location &loc)
diff --git a/src/plugins/debugger/disassembleragent.h b/src/plugins/debugger/disassembleragent.h
index f2b69f8b05f76339e4e5b40a9c1fa3681a6704fc..7c779315b3a75b4c0880336911a19314159e3ca2 100644
--- a/src/plugins/debugger/disassembleragent.h
+++ b/src/plugins/debugger/disassembleragent.h
@@ -57,6 +57,7 @@ public:
     void setTryMixed(bool on);
     void setLocation(const Location &location);
     const Location &location() const;
+    void scheduleResetLocation();
     void resetLocation();
     void setContents(const DisassemblerLines &contents);
     void updateLocationMarker();