diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
index 5cdbe2d..ff9945b 100644
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -548,6 +548,26 @@
         output = subprocess.check_output([sys.executable, '-c', code])
         self.assert_(output.startswith(b'Hello World!'), ascii(output))
 
+    def test_handles_closed_on_exception(self):
+        # If CreateProcess exits with an error, ensure the
+        # duplicate output handles are released
+        ifhandle, ifname = self.mkstemp()
+        ofhandle, ofname = self.mkstemp()
+        efhandle, efname = self.mkstemp()
+        try:
+            subprocess.Popen (["*"], stdin=ifhandle, stdout=ofhandle,
+              stderr=efhandle)
+        except OSError:
+            os.close(ifhandle)
+            os.remove(ifname)
+            os.close(ofhandle)
+            os.remove(ofname)
+            os.close(efhandle)
+            os.remove(efname)
+        self.assertFalse(os.path.exists(ifname))
+        self.assertFalse(os.path.exists(ofname))
+        self.assertFalse(os.path.exists(efname))
+
     #
     # POSIX tests
     #
diff --git a/PC/_subprocess.c b/PC/_subprocess.c
index 27d3dc6..635abc8 100644
--- a/PC/_subprocess.c
+++ b/PC/_subprocess.c
@@ -429,6 +429,7 @@
     PyObject* env_mapping;
     Py_UNICODE* current_directory;
     PyObject* startup_info;
+    DWORD error;
 
     if (! PyArg_ParseTuple(args, "ZZOOiiOZO:CreateProcess",
                            &application_name,
@@ -478,8 +479,22 @@
 
     Py_XDECREF(environment);
 
-    if (! result)
-        return PyErr_SetFromWindowsErr(GetLastError());
+    if (! result) {
+        error = GetLastError();
+        if(si.hStdInput != INVALID_HANDLE_VALUE) {
+            CloseHandle(si.hStdInput);
+            si.hStdInput = INVALID_HANDLE_VALUE;
+        }
+        if(si.hStdOutput != INVALID_HANDLE_VALUE) {
+            CloseHandle(si.hStdOutput);
+            si.hStdOutput = INVALID_HANDLE_VALUE;
+        }
+        if(si.hStdError != INVALID_HANDLE_VALUE) {
+            CloseHandle(si.hStdError);
+            si.hStdError = INVALID_HANDLE_VALUE;
+        }
+        return PyErr_SetFromWindowsErr(error);
+    }
 
     return Py_BuildValue("NNii",
                          sp_handle_new(pi.hProcess),
