diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp
index a48fd03e2a7ed6f45bdec8457fbb080e67db1f50..20de05d7766d91828d568b092fbe62b46a32bd50 100644
--- a/src/plugins/qt4projectmanager/qt4nodes.cpp
+++ b/src/plugins/qt4projectmanager/qt4nodes.cpp
@@ -1299,6 +1299,7 @@ void Qt4ProFileNode::asyncUpdate()
 {
     m_project->incrementPendingEvaluateFutures();
     setupReader();
+    m_parseFutureWatcher.waitForFinished();
     QFuture<bool> future = QtConcurrent::run(&Qt4ProFileNode::asyncEvaluate, this);
     m_parseFutureWatcher.setFuture(future);
 }
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index 7758d40080c790068e71121bbcd57ca624babdb0..534b1c77c18e596424c88dc61539e3e7b63c3d70 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -628,6 +628,8 @@ void Qt4Project::update()
 
 void Qt4Project::scheduleAsyncUpdate(Qt4ProFileNode *node)
 {
+    if (m_asyncUpdateState == ShuttingDown)
+        return;
     if (debug)
         qDebug()<<"schduleAsyncUpdate (node)";
     Q_ASSERT(m_asyncUpdateState != NoState);
@@ -694,6 +696,8 @@ void Qt4Project::scheduleAsyncUpdate()
 {
     if (debug)
         qDebug()<<"scheduleAsyncUpdate";
+    if (m_asyncUpdateState == ShuttingDown)
+        return;
     Q_ASSERT(m_asyncUpdateState != NoState);
     if (m_cancelEvaluate) { // we are in progress of canceling
                             // and will start the evaluation after that