diff --git a/src/libs/utils/process_ctrlc_stub.cpp b/src/libs/utils/process_ctrlc_stub.cpp
index 6f6905f931ef6d36b76661524a88967350cdccd8..f4179f267ea2cd87f9e2ebe3934c463e1990fe3f 100644
--- a/src/libs/utils/process_ctrlc_stub.cpp
+++ b/src/libs/utils/process_ctrlc_stub.cpp
@@ -165,6 +165,7 @@ DWORD WINAPI processWatcherThread(LPVOID lpParameter)
     DWORD dwExitCode;
     if (!GetExitCodeProcess(hProcess, &dwExitCode))
         dwExitCode = -1;
+    CloseHandle(hProcess);
     PostMessage(hwndMain, WM_DESTROY, dwExitCode, 0);
     return 0;
 }
@@ -185,6 +186,7 @@ bool startProcess(wchar_t *pCommandLine)
         fwprintf(stderr, L"qtcreator_ctrlc_stub: Command line failed: %s\n", pCommandLine);
         return false;
     }
+    CloseHandle(pi.hThread);
 
     HANDLE hThread = CreateThread(NULL, 0, processWatcherThread, reinterpret_cast<void*>(pi.hProcess), 0, NULL);
     if (!hThread) {