cpython/Lib/multiprocessing
Miss Islington (bot) 612b535e6d
[3.13] gh-118981: multiprocessing.popen_spawn_posix, fix potential hang (gh-118982) (#138606)
gh-118981: multiprocessing.popen_spawn_posix, fix potential hang (gh-118982)

fix potential hang.

It can happen that the child crashes right in the beginning for whatever reason. In this case, the parent will hang when writing into the pipe, because the child fd is not closed yet.

The normal pattern is to close the child fds right after the child proc is forked/executed/spawned, so when the child dies, then also the pipes will be closed, and there will be no hang (the parent gets SIGPIPE instead).
(cherry picked from commit 8ed5a2b56c)

Co-authored-by: Albert Zeyer <albzey@gmail.com>
2025-09-07 07:41:54 +00:00
..
dummy bpo-37116: Use PEP 570 syntax for positional-only parameters. (GH-13700) 2019-06-01 11:00:15 +03:00
__init__.py Simplify __all__ in multiprocessing (GH-6856) 2018-07-11 19:22:28 +09:00
connection.py [3.13] gh-132124: improve safety nets for creating AF_UNIX socket files (GH-134085) (#134448) 2025-08-04 07:38:49 -07:00
context.py [3.13] gh-80334: fix multiprocessing.freeze_support for other spawn platforms (GH-134462) (#134620) 2025-05-24 04:13:37 +00:00
forkserver.py [3.13] gh-135335: flush stdout/stderr in forkserver after preloading modules (GH-135338) (#135671) 2025-06-18 12:40:21 +00:00
heap.py bpo-32759: Free unused arenas in multiprocessing.heap (GH-5827) 2018-04-09 17:37:55 +02:00
managers.py [3.13] gh-71936: Fix race condition in multiprocessing.Pool (GH-124973) (GH-126869) 2024-11-15 14:05:14 +00:00
pool.py gh-109649: Use os.process_cpu_count() (#110165) 2023-10-01 03:14:57 +02:00
popen_fork.py gh-83856: Honor atexit for all multiprocessing start methods (GH-114279) 2024-05-03 11:45:46 -07:00
popen_forkserver.py bpo-36888: Add multiprocessing.parent_process() (GH-13247) 2019-05-20 21:37:05 +02:00
popen_spawn_posix.py [3.13] gh-118981: multiprocessing.popen_spawn_posix, fix potential hang (gh-118982) (#138606) 2025-09-07 07:41:54 +00:00
popen_spawn_win32.py gh-118293: Suppress mouse cursor feedback when launching Windows processes with multiprocessing (GH-118315) 2024-04-28 21:10:44 +00:00
process.py gh-83856: Honor atexit for all multiprocessing start methods (GH-114279) 2024-05-03 11:45:46 -07:00
queues.py gh-71052: Enable test_concurrent_futures on platforms that lack multiprocessing (gh-115917) 2024-02-25 11:38:18 -08:00
reduction.py bpo-34521: Fix tests in test_multiprocessing_spawn to use correctly CMSG_SPACE (GH-9613) 2018-09-28 02:51:05 -07:00
resource_sharer.py gh-101225: Increase the socket backlog when creating a multiprocessing.connection.Listener (#113567) 2024-01-13 10:48:33 +01:00
resource_tracker.py [3.13] gh-131788: make resource_tracker re-entrant safe (GH-131787) (#137738) 2025-08-14 12:52:30 +02:00
shared_memory.py gh-82300: Add track parameter to multiprocessing.shared_memory (#110778) 2023-12-05 00:11:44 -08:00
sharedctypes.py bpo-32157: Removed explicit quotes around %r and {!r}. (#4582) 2017-11-28 22:54:42 +02:00
spawn.py More actionable error message when spawn is incorrectly used. (#102203) 2023-08-15 18:03:45 -07:00
synchronize.py [3.13] remove type annotations from multiprocessing. (GH-129381) (#129470) 2025-01-30 08:54:15 +00:00
util.py [3.13] gh-132124: improve safety nets for creating AF_UNIX socket files (GH-134085) (#134448) 2025-08-04 07:38:49 -07:00