diff --git a/src/plugins/projectexplorer/kitmanager.cpp b/src/plugins/projectexplorer/kitmanager.cpp
index d1aa4b0880aa76155074d98fcc9c2a25165f333a..e90cd6dfe8654e9ba6e2faf2ec415d31aa8c77db 100644
--- a/src/plugins/projectexplorer/kitmanager.cpp
+++ b/src/plugins/projectexplorer/kitmanager.cpp
@@ -42,6 +42,7 @@
 
 #include <utils/persistentsettings.h>
 #include <utils/environment.h>
+#include <utils/qtcassert.h>
 
 #include <QCoreApplication>
 #include <QDir>
@@ -91,7 +92,7 @@ public:
 
 KitManagerPrivate::KitManagerPrivate()
     : m_defaultKit(0), m_initialized(false),
-      m_writer(new Utils::PersistentSettingsWriter(settingsFileName(), QLatin1String("QtCreatorProfiles")))
+      m_writer(0)
 { }
 
 KitManagerPrivate::~KitManagerPrivate()
@@ -148,6 +149,7 @@ KitManager::KitManager(QObject *parent) :
 
 void KitManager::restoreKits()
 {
+    QTC_ASSERT(!d->m_writer, return);
     QList<Kit *> kitsToRegister;
     QList<Kit *> kitsToCheck;
 
@@ -213,6 +215,8 @@ void KitManager::restoreKits()
     Kit *k = find(userKits.defaultKit);
     if (k)
         setDefaultKit(k);
+
+    d->m_writer = new Utils::PersistentSettingsWriter(settingsFileName(), QLatin1String("QtCreatorProfiles"));
 }
 
 KitManager::~KitManager()
@@ -224,7 +228,7 @@ KitManager::~KitManager()
 
 void KitManager::saveKits()
 {
-    if (!d->m_initialized) // ignore save requests while we are not initialized.
+    if (!d->m_writer) // ignore save requests while we are not initialized.
         return;
 
     QVariantMap data;
diff --git a/src/plugins/projectexplorer/toolchainmanager.cpp b/src/plugins/projectexplorer/toolchainmanager.cpp
index 5a9eb58870f4d6844f18e5ea060aad2c3cbffd1d..158c7401acbbffde95f03d7f7f74f56eeaad3796 100644
--- a/src/plugins/projectexplorer/toolchainmanager.cpp
+++ b/src/plugins/projectexplorer/toolchainmanager.cpp
@@ -39,6 +39,7 @@
 #include <extensionsystem/pluginmanager.h>
 
 #include <utils/persistentsettings.h>
+#include <utils/qtcassert.h>
 
 #include <QCoreApplication>
 #include <QDir>
@@ -81,7 +82,6 @@ public:
     QList<ToolChain *> &toolChains();
 
     ToolChainManager *q;
-    bool m_initialized;
     QMap<QString, Utils::FileName> m_abiToDebugger;
     Utils::PersistentSettingsWriter *m_writer;
 
@@ -90,8 +90,7 @@ private:
 };
 
 ToolChainManagerPrivate::ToolChainManagerPrivate(ToolChainManager *parent)
-    : q(parent), m_initialized(false),
-      m_writer(new Utils::PersistentSettingsWriter(settingsFileName(QLatin1String(TOOLCHAIN_FILENAME)), QLatin1String("QtCreatorToolChains")))
+    : q(parent), m_writer(0)
 { }
 
 ToolChainManagerPrivate::~ToolChainManagerPrivate()
@@ -99,10 +98,8 @@ ToolChainManagerPrivate::~ToolChainManagerPrivate()
 
 QList<ToolChain *> &ToolChainManagerPrivate::toolChains()
 {
-    if (!m_initialized) {
-        m_initialized = true;
+    if (!m_writer)
         q->restoreToolChains();
-    }
     return m_toolChains;
 }
 
@@ -136,6 +133,10 @@ 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 81fa5b99b6ef9b953bfbc666de08d420486c8cb8..93cf2eb3a00b4744748291c190570be1cc737bb6 100644
--- a/src/plugins/qtsupport/qtversionmanager.cpp
+++ b/src/plugins/qtsupport/qtversionmanager.cpp
@@ -177,6 +177,10 @@ 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;
@@ -362,8 +366,7 @@ void QtVersionManager::updateFromInstaller(bool emitSignal)
 void QtVersionManager::saveQtVersions()
 {
     if (!m_writer)
-        m_writer = new Utils::PersistentSettingsWriter(settingsFileName(QLatin1String(QTVERSION_FILENAME)),
-                                                       QLatin1String("QtCreatorQtVersions"));
+        return;
 
     QVariantMap data;
     data.insert(QLatin1String(QTVERSION_FILE_VERSION_KEY), 1);