bpo-33929: Fix regression in spawn_main() (#7962)
OpenProcess() creates a new handle that must be closed later.
diff --git a/Lib/multiprocessing/spawn.py b/Lib/multiprocessing/spawn.py
index 2de4cb7..73aa694 100644
--- a/Lib/multiprocessing/spawn.py
+++ b/Lib/multiprocessing/spawn.py
@@ -103,8 +103,12 @@
_winapi.PROCESS_DUP_HANDLE, False, parent_pid)
else:
source_process = None
- new_handle = reduction.duplicate(pipe_handle,
- source_process=source_process)
+ try:
+ new_handle = reduction.duplicate(pipe_handle,
+ source_process=source_process)
+ finally:
+ if source_process is not None:
+ _winapi.CloseHandle(source_process)
fd = msvcrt.open_osfhandle(new_handle, os.O_RDONLY)
else:
from . import semaphore_tracker