diff --git a/src/libs/utils/consoleprocess.cpp b/src/libs/utils/consoleprocess.cpp
index fe8ef8328875f339cebfe9d6f585c884710ecf33..74b0cc0f1e7bae169e606544776a401c4df1ffb8 100644
--- a/src/libs/utils/consoleprocess.cpp
+++ b/src/libs/utils/consoleprocess.cpp
@@ -65,6 +65,11 @@ QString ConsoleProcess::msgCannotCreateTempFile(const QString &why)
     return tr("Cannot create temporary file: %1").arg(why);
 }
 
+QString ConsoleProcess::msgCannotWriteTempFile()
+{
+    return tr("Cannot write temporary file. Disk full?");
+}
+
 QString ConsoleProcess::msgCannotCreateTempDir(const QString & dir, const QString &why)
 {
     return tr("Cannot create temporary directory '%1': %2").arg(dir, why);
diff --git a/src/libs/utils/consoleprocess.h b/src/libs/utils/consoleprocess.h
index 26ec85fff345d8903bf63d55ce56b994213a3898..9dd6283cb1bf4b7110213770ca7fe0566971558c 100644
--- a/src/libs/utils/consoleprocess.h
+++ b/src/libs/utils/consoleprocess.h
@@ -104,6 +104,7 @@ private:
     static QString msgCommChannelFailed(const QString &error);
     static QString msgPromptToClose();
     static QString msgCannotCreateTempFile(const QString &why);
+    static QString msgCannotWriteTempFile();
     static QString msgCannotCreateTempDir(const QString & dir, const QString &why);
     static QString msgUnexpectedOutput(const QByteArray &what);
     static QString msgCannotChangeToWorkDir(const QString & dir, const QString &why);
diff --git a/src/libs/utils/consoleprocess_unix.cpp b/src/libs/utils/consoleprocess_unix.cpp
index c4c745fc9b37ffa6fa3e6b7c50da55bc3afc19d9..737dc334bd731f245fd79a0f0e596372758dde4f 100644
--- a/src/libs/utils/consoleprocess_unix.cpp
+++ b/src/libs/utils/consoleprocess_unix.cpp
@@ -173,11 +173,18 @@ bool ConsoleProcess::start(const QString &program, const QString &args)
             d->m_tempFile = 0;
             return false;
         }
+        QByteArray contents;
         foreach (const QString &var, env) {
-            d->m_tempFile->write(var.toLocal8Bit());
-            d->m_tempFile->write("", 1);
+            QByteArray l8b = var.toLocal8Bit();
+            contents.append(l8b.constData(), l8b.size() + 1);
+        }
+        if (d->m_tempFile->write(contents) != contents.size() || !d->m_tempFile->flush()) {
+            stubServerShutdown();
+            emit processMessage(msgCannotWriteTempFile(), true);
+            delete d->m_tempFile;
+            d->m_tempFile = 0;
+            return false;
         }
-        d->m_tempFile->flush();
     }
 
     xtermArgs
diff --git a/src/libs/utils/consoleprocess_win.cpp b/src/libs/utils/consoleprocess_win.cpp
index f450e9265f9dd75781ce962049af94cc2378c940..6d8a2f4ec6a8da0b6f722065300e4b6a7567d32d 100644
--- a/src/libs/utils/consoleprocess_win.cpp
+++ b/src/libs/utils/consoleprocess_win.cpp
@@ -157,6 +157,16 @@ bool ConsoleProcess::start(const QString &program, const QString &args)
         foreach (const QString &var, fixWinEnvironment(env))
             out << var << QChar(0);
         out << QChar(0);
+#if QT_VERSION >= QT_VERSION_CHECK(4, 8, 0)
+        out.flush();
+        if (out.status() != QTextStream::Ok) {
+            stubServerShutdown();
+            emit processMessage(msgCannotWriteTempFile(), true);
+            delete d->m_tempFile;
+            d->m_tempFile = 0;
+            return false;
+        }
+#endif
     }
 
     STARTUPINFO si;