From: Victor Stinner Date: Wed, 27 Jun 2018 13:18:39 +0000 (+0200) Subject: bpo-33929: Fix regression in spawn_main() (#7962) X-Git-Tag: v3.8.0a1~1483 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0aab8660cdaa540730994afbce49a146dd779bce;p=thirdparty%2FPython%2Fcpython.git 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 2de4cb7f6378..73aa69471f29 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