]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-127076: Disable strace tests under LD_PRELOAD (#127086)
authorCody Maloney <cmaloney@users.noreply.github.com>
Thu, 21 Nov 2024 09:33:12 +0000 (01:33 -0800)
committerGitHub <noreply@github.com>
Thu, 21 Nov 2024 09:33:12 +0000 (10:33 +0100)
Distribution tooling (ex. sandbox on Gentoo and fakeroot on Debian) uses
LD_PRELOAD to intercept system calls and potentially modify them when
building. These tools can change the set of system calls, so disable
system call testing under these cases.

Co-authored-by: Michał Górny <mgorny@gentoo.org>
Lib/test/support/strace_helper.py
Misc/NEWS.d/next/Tests/2024-11-21-02-03-48.gh-issue-127076.a3avV1.rst [new file with mode: 0644]

index 7fb4581b2a73901d7cca28589f2f7266d1227616..90281b472742995bafdbe073fa478c90208fa3fb 100644 (file)
@@ -1,6 +1,7 @@
 import re
 import sys
 import textwrap
+import os
 import unittest
 from dataclasses import dataclass
 from functools import cache
@@ -163,6 +164,13 @@ def requires_strace():
     if sys.platform != "linux":
         return unittest.skip("Linux only, requires strace.")
 
+    if "LD_PRELOAD" in os.environ:
+        # Distribution packaging (ex. Debian `fakeroot` and Gentoo `sandbox`)
+        # use LD_PRELOAD to intercept system calls, which changes the overall
+        # set of system calls which breaks tests expecting a specific set of
+        # system calls).
+        return unittest.skip("Not supported when LD_PRELOAD is intercepting system calls.")
+
     if support.check_sanitizer(address=True, memory=True):
         return unittest.skip("LeakSanitizer does not work under ptrace (strace, gdb, etc)")
 
diff --git a/Misc/NEWS.d/next/Tests/2024-11-21-02-03-48.gh-issue-127076.a3avV1.rst b/Misc/NEWS.d/next/Tests/2024-11-21-02-03-48.gh-issue-127076.a3avV1.rst
new file mode 100644 (file)
index 0000000..7dec8bd
--- /dev/null
@@ -0,0 +1 @@
+Disable strace based system call tests when LD_PRELOAD is set.