Skip to content

Commit

Permalink
pythongh-127076: Disable strace tests under LD_PRELOAD (python#127086)
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
cmaloney and mgorny authored Nov 21, 2024
1 parent 1629d2c commit ff2278e
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 0 deletions.
8 changes: 8 additions & 0 deletions Lib/test/support/strace_helper.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import re
import sys
import textwrap
import os
import unittest
from dataclasses import dataclass
from functools import cache
Expand Down Expand Up @@ -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)")

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Disable strace based system call tests when LD_PRELOAD is set.

0 comments on commit ff2278e

Please sign in to comment.