https://github.com/python/cpython/commit/bfd774d61eeb384b74380deb1fc5b726decba75e
commit: bfd774d61eeb384b74380deb1fc5b726decba75e
branch: main
author: Serhiy Storchaka <[email protected]>
committer: serhiy-storchaka <[email protected]>
date: 2026-07-21T13:22:20Z
summary:

gh-154352: Fix killing a worker process in regrtest on OpenBSD (GH-154353)

os.getsid() is only allowed for a process in the same session on
OpenBSD.  Worker processes are started in their own session, so the
failure means that the process group can be killed.

Co-authored-by: Claude Opus 4.8 <[email protected]>

files:
M Lib/test/libregrtest/run_workers.py

diff --git a/Lib/test/libregrtest/run_workers.py 
b/Lib/test/libregrtest/run_workers.py
index befdac7ee77f107..7e6c7fa4cc5507a 100644
--- a/Lib/test/libregrtest/run_workers.py
+++ b/Lib/test/libregrtest/run_workers.py
@@ -147,9 +147,12 @@ def _kill(self) -> None:
 
         use_killpg = USE_PROCESS_GROUP
         if use_killpg:
-            parent_sid = os.getsid(0)
-            sid = os.getsid(popen.pid)
-            use_killpg = (sid != parent_sid)
+            try:
+                use_killpg = (os.getsid(popen.pid) != os.getsid(0))
+            except PermissionError:
+                # On OpenBSD getsid() is only allowed for a process in the
+                # same session, so the failure means that it is not.
+                use_killpg = True
 
         if use_killpg:
             what = f"{self} process group"

_______________________________________________
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