From 0aab8660cdaa540730994afbce49a146dd779bce Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 27 Jun 2018 15:18:39 +0200 Subject: bpo-33929: Fix regression in spawn_main() (#7962) OpenProcess() creates a new handle that must be closed later. --- Lib/multiprocessing/spawn.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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 @@ def spawn_main(pipe_handle, parent_pid=None, tracker_fd=None): _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 -- cgit v0.12