]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.14] gh-154352: Fix killing a worker process in regrtest on OpenBSD (GH-154353...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Tue, 21 Jul 2026 14:29:47 +0000 (16:29 +0200)
committerGitHub <noreply@github.com>
Tue, 21 Jul 2026 14:29:47 +0000 (17:29 +0300)
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.
(cherry picked from commit bfd774d61eeb384b74380deb1fc5b726decba75e)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Lib/test/libregrtest/run_workers.py

index 424085a0050eb59e43b7b9a3c1b7a89b31cb0f6a..4458e160705bca7f053ed6b3cd16c7892d9f70a7 100644 (file)
@@ -147,9 +147,12 @@ class WorkerThread(threading.Thread):
 
         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"