diff --git a/src/plugins/projectexplorer/kitmanager.cpp b/src/plugins/projectexplorer/kitmanager.cpp
index 0dfc3e8e04f1b7df5c9906d78f115e13f03e36d7..d1aa4b0880aa76155074d98fcc9c2a25165f333a 100644
--- a/src/plugins/projectexplorer/kitmanager.cpp
+++ b/src/plugins/projectexplorer/kitmanager.cpp
@@ -323,8 +323,8 @@ KitManager::KitList KitManager::restoreKits(const Utils::FileName &fileName)
 QList<Kit *> KitManager::kits(const KitMatcher *m) const
 {
     if (!d->m_initialized) {
-        const_cast<KitManager *>(this)->restoreKits();
         d->m_initialized = true;
+        const_cast<KitManager *>(this)->restoreKits();
     }
 
     QList<Kit *> result;
@@ -356,8 +356,8 @@ Kit *KitManager::find(const KitMatcher *m) const
 Kit *KitManager::defaultKit()
 {
     if (!d->m_initialized) {
-        restoreKits();
         d->m_initialized = true;
+        restoreKits();
     }
     return d->m_defaultKit;
 }
diff --git a/src/plugins/projectexplorer/toolchainmanager.cpp b/src/plugins/projectexplorer/toolchainmanager.cpp
index 158c7401acbbffde95f03d7f7f74f56eeaad3796..5a9eb58870f4d6844f18e5ea060aad2c3cbffd1d 100644
--- a/src/plugins/projectexplorer/toolchainmanager.cpp
+++ b/src/plugins/projectexplorer/toolchainmanager.cpp
@@ -39,7 +39,6 @@
 #include <extensionsystem/pluginmanager.h>
 
 #include <utils/persistentsettings.h>
-#include <utils/qtcassert.h>
 
 #include <QCoreApplication>
 #include <QDir>
@@ -82,6 +81,7 @@ public:
     QList<ToolChain *> &toolChains();
 
     ToolChainManager *q;
+    bool m_initialized;
     QMap<QString, Utils::FileName> m_abiToDebugger;
     Utils::PersistentSettingsWriter *m_writer;
 
@@ -90,7 +90,8 @@ private:
 };
 
 ToolChainManagerPrivate::ToolChainManagerPrivate(ToolChainManager *parent)
-    : q(parent), m_writer(0)
+    : q(parent), m_initialized(false),
+      m_writer(new Utils::PersistentSettingsWriter(settingsFileName(QLatin1String(TOOLCHAIN_FILENAME)), QLatin1String("QtCreatorToolChains")))
 { }
 
 ToolChainManagerPrivate::~ToolChainManagerPrivate()
@@ -98,8 +99,10 @@ ToolChainManagerPrivate::~ToolChainManagerPrivate()
 
 QList<ToolChain *> &ToolChainManagerPrivate::toolChains()
 {
-    if (!m_writer)
+    if (!m_initialized) {
+        m_initialized = true;
         q->restoreToolChains();
+    }
     return m_toolChains;
 }
 
@@ -133,10 +136,6 @@ ToolChainManager::ToolChainManager(QObject *parent) :
 
 void ToolChainManager::restoreToolChains()
 {
-    QTC_ASSERT(!d->m_writer, return);
-    d->m_writer =
-            new Utils::PersistentSettingsWriter(settingsFileName(QLatin1String(TOOLCHAIN_FILENAME)), QLatin1String("QtCreatorToolChains"));
-
     QList<ToolChain *> tcsToRegister;
     QList<ToolChain *> tcsToCheck;
 
diff --git a/src/plugins/qtsupport/qtversionmanager.cpp b/src/plugins/qtsupport/qtversionmanager.cpp
index 93cf2eb3a00b4744748291c190570be1cc737bb6..81fa5b99b6ef9b953bfbc666de08d420486c8cb8 100644
--- a/src/plugins/qtsupport/qtversionmanager.cpp
+++ b/src/plugins/qtsupport/qtversionmanager.cpp
@@ -177,10 +177,6 @@ QtVersionManager *QtVersionManager::instance()
 
 bool QtVersionManager::restoreQtVersions()
 {
-    QTC_ASSERT(!m_writer, return false);
-    m_writer = new Utils::PersistentSettingsWriter(settingsFileName(QLatin1String(QTVERSION_FILENAME)),
-                                                   QLatin1String("QtCreatorQtVersions"));
-
     QList<QtVersionFactory *> factories = ExtensionSystem::PluginManager::getObjects<QtVersionFactory>();
 
     Utils::PersistentSettingsReader reader;
@@ -366,7 +362,8 @@ void QtVersionManager::updateFromInstaller(bool emitSignal)
 void QtVersionManager::saveQtVersions()
 {
     if (!m_writer)
-        return;
+        m_writer = new Utils::PersistentSettingsWriter(settingsFileName(QLatin1String(QTVERSION_FILENAME)),
+                                                       QLatin1String("QtCreatorQtVersions"));
 
     QVariantMap data;
     data.insert(QLatin1String(QTVERSION_FILE_VERSION_KEY), 1);