]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.14] gh-98552: flush std streams in the multiprocessing forkserver before fork...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Sat, 22 Nov 2025 20:23:22 +0000 (21:23 +0100)
committerGitHub <noreply@github.com>
Sat, 22 Nov 2025 20:23:22 +0000 (12:23 -0800)
gh-98552: flush std streams in the multiprocessing forkserver before fork (GH-141849)

* flush std streams in the multiprocessing forkserver before fork

* NEWS
(cherry picked from commit 58badb1711e12b6e8b5240ab96cdd01b95012de7)

Co-authored-by: Gregory P. Smith <68491+gpshead@users.noreply.github.com>
Lib/multiprocessing/forkserver.py
Misc/NEWS.d/next/Library/2025-11-22-18-00-38.gh-issue-98552.d5KNy-.rst [new file with mode: 0644]

index cc8947c5e04fb11b0ea3ef39db3a599851e940a3..8a4e8d835b0c91d67d6e2e2825f620db02d6a6d7 100644 (file)
@@ -326,6 +326,7 @@ def main(listener_fd, alive_r, preload, main_path=None, sys_path=None,
                                     len(fds)))
                         child_r, child_w, *fds = fds
                         s.close()
+                        util._flush_std_streams()
                         pid = os.fork()
                         if pid == 0:
                             # Child
diff --git a/Misc/NEWS.d/next/Library/2025-11-22-18-00-38.gh-issue-98552.d5KNy-.rst b/Misc/NEWS.d/next/Library/2025-11-22-18-00-38.gh-issue-98552.d5KNy-.rst
new file mode 100644 (file)
index 0000000..37a71ac
--- /dev/null
@@ -0,0 +1,4 @@
+The :mod:`multiprocessing` forkserver process now flushes stdout and stderr
+before it forks to avoid the confusion children inheriting any buffered but
+not yet written output data.  Normally there is none, but when using
+:func:`multiprocessing.set_forkserver_preload` there *could* be.