https://github.com/python/cpython/commit/58badb1711e12b6e8b5240ab96cdd01b95012de7
commit: 58badb1711e12b6e8b5240ab96cdd01b95012de7
branch: main
author: Gregory P. Smith <[email protected]>
committer: gpshead <[email protected]>
date: 2025-11-22T18:29:51Z
summary:

gh-98552: flush std streams in the multiprocessing forkserver before fork 
(#141849)

* flush std streams in the multiprocessing forkserver before fork

* NEWS

files:
A Misc/NEWS.d/next/Library/2025-11-22-18-00-38.gh-issue-98552.d5KNy-.rst
M Lib/multiprocessing/forkserver.py

diff --git a/Lib/multiprocessing/forkserver.py 
b/Lib/multiprocessing/forkserver.py
index cc8947c5e04fb1..8a4e8d835b0c91 100644
--- a/Lib/multiprocessing/forkserver.py
+++ b/Lib/multiprocessing/forkserver.py
@@ -326,6 +326,7 @@ def sigchld_handler(*_unused):
                                     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
index 00000000000000..37a71ac1fff3f3
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2025-11-22-18-00-38.gh-issue-98552.d5KNy-.rst
@@ -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.

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to