diff options
author | Antoine Pitrou <pitrou@free.fr> | 2017-07-22 11:22:54 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-22 11:22:54 (GMT) |
commit | 896145d9d266ee2758cfcd7691238cbc1f9e1ab8 (patch) | |
tree | 3b36a7020108c7305a478e174d8a73cdd6deb540 /Lib/multiprocessing/forkserver.py | |
parent | 616ecf18f3aacbd8d172e01673877b22fe946e54 (diff) | |
download | cpython-896145d9d266ee2758cfcd7691238cbc1f9e1ab8.zip cpython-896145d9d266ee2758cfcd7691238cbc1f9e1ab8.tar.gz cpython-896145d9d266ee2758cfcd7691238cbc1f9e1ab8.tar.bz2 |
bpo-26732: fix too many fds in processes started with the "forkserver" method (#2813)
* bpo-26732: fix too many fds in processes started with the "forkserver" method
A child process would inherit as many fds as the number of still-running children.
* Add blurb and test comment
Diffstat (limited to 'Lib/multiprocessing/forkserver.py')
-rw-r--r-- | Lib/multiprocessing/forkserver.py | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/Lib/multiprocessing/forkserver.py b/Lib/multiprocessing/forkserver.py index b9f9b9d..69b842a 100644 --- a/Lib/multiprocessing/forkserver.py +++ b/Lib/multiprocessing/forkserver.py @@ -236,8 +236,11 @@ def main(listener_fd, alive_r, preload, main_path=None, sys_path=None): code = 1 try: listener.close() + selector.close() + unused_fds = [alive_r, child_w, sig_r, sig_w] + unused_fds.extend(pid_to_fd.values()) code = _serve_one(child_r, fds, - (alive_r, child_w, sig_r, sig_w), + unused_fds, old_handlers) except Exception: sys.excepthook(*sys.exc_info()) |