diff options
| author | Antoine Pitrou <pitrou@free.fr> | 2017-07-22 13:22:54 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-07-22 13:22:54 +0200 |
| commit | 896145d9d266ee2758cfcd7691238cbc1f9e1ab8 (patch) | |
| tree | 3b36a7020108c7305a478e174d8a73cdd6deb540 /Lib/multiprocessing | |
| parent | 616ecf18f3aacbd8d172e01673877b22fe946e54 (diff) | |
| download | cpython-git-896145d9d266ee2758cfcd7691238cbc1f9e1ab8.tar.gz | |
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')
| -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 b9f9b9dd8b..69b842aa93 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()) |
