Skip to content

gh-98894: Check readelf failures in test_dtrace - #152345

Merged
vstinner merged 2 commits into
python:mainfrom
stratakis:readelf_errors
Jul 2, 2026
Merged

vstinner merged 2 commits into
python:mainfrom
stratakis:readelf_errors

Conversation

@stratakis

@stratakis stratakis commented Jun 26, 2026 •

Copy link
Copy Markdown
Contributor

Report readelf command failures directly instead of later failing with missing-probe assertions.

Report readelf command failures directly instead of later failing with
missing-probe assertions.
@bedevere-app bedevere-app Bot added the tests Tests in the Lib/test dir label Jun 26, 2026
@stratakis

Copy link
Copy Markdown
Contributor Author

cc @vstinner

@vstinner vstinner left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

get_readelf_version() and get_readelf_output() share most code to spawn the subprocess. Can you move the common code into a run_readelf(command) function?

Something like:

def run_readelf(cmd):
    # Force the C locale to disable localization.
    env = dict(os.environ, LC_ALL="C")
    proc = subprocess.Popen(
        cmd,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
        universal_newlines=True,
        env=env,
    )
    with proc:
        stdout, stderr = proc.communicate()

    if proc.returncode:
        raise AssertionError(
            f"Command {' '.join(cmd)!r} failed "
            f"with exit code {proc.returncode}: "
            f"stdout={version!r} stderr={stderr!r}"
        )

    return stdout

You can replace legacy universal_newlines=True with text=True :-)

@vstinner vstinner added skip news needs backport to 3.13 only security fixes needs backport to 3.14 bugs and security fixes needs backport to 3.15 bugs and security fixes labels Jul 2, 2026
@vstinner
vstinner enabled auto-merge (squash) July 2, 2026 13:17
@vstinner
vstinner merged commit d60a677 into python:main Jul 2, 2026
56 checks passed
@miss-islington-app

Copy link
Copy Markdown

Thanks @stratakis for the PR, and @vstinner for merging it 🌮🎉.. I'm working now to backport this PR to: 3.13, 3.14, 3.15.
🐍🍒⛏🤖

@miss-islington-app

Copy link
Copy Markdown

Sorry, @stratakis and @vstinner, I could not cleanly backport this to 3.14 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker d60a6779e8dd5fbf1f2f84b34bb5a20f3e8cd7fd 3.14

@miss-islington-app

Copy link
Copy Markdown

Sorry, @stratakis and @vstinner, I could not cleanly backport this to 3.13 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker d60a6779e8dd5fbf1f2f84b34bb5a20f3e8cd7fd 3.13

@bedevere-app

bedevere-app Bot commented Jul 2, 2026

Copy link
Copy Markdown

GH-152891 is a backport of this pull request to the 3.15 branch.

@bedevere-app bedevere-app Bot removed the needs backport to 3.15 bugs and security fixes label Jul 2, 2026
@stratakis

Copy link
Copy Markdown
Contributor Author

3.14 and 3.13 are not relevant here due to the dtrace support not being there in a proper way (it will to be backported fully from #142397 )

@vstinner vstinner removed needs backport to 3.13 only security fixes needs backport to 3.14 bugs and security fixes labels Jul 2, 2026
@vstinner

vstinner commented Jul 2, 2026

Copy link
Copy Markdown
Member

Merged, thanks for your fix.

3.14 and 3.13 are not relevant here due to the dtrace support not being there in a proper way (it will to be backported fully from #142397 )

Oh ok. No 3.13 and 3.14 backport in this case.

vstinner pushed a commit that referenced this pull request Jul 2, 2026
…152891)

gh-98894: Check readelf failures in test_dtrace (GH-152345)

Report readelf command failures directly instead of later failing with
missing-probe assertions.
(cherry picked from commit d60a677)

Co-authored-by: stratakis <cstratak@redhat.com>
vstinner added a commit that referenced this pull request Oct 16, 2026
* gh-98894: Fix DTrace test_check_probes for shared builds (#151122)

When building with --enable-shared, the SystemTap/DTrace notes
live in libpython. Add detection logic to be used by readelf.

Force the C locale on readelf output.

(cherry picked from commit 3a08e93)

* gh-151496: Use process groups in test_dtrace (#151512)

Create a new process group to run bpftrace commands, so it's possible
to kill also child processes on timeout.

(cherry picked from commit a064b32)

* gh-151496: Use process groups in TraceBackend in test_dtrace (#152039)

Run the generic DTrace/SystemTap commands in a new process group and
terminate the whole group on timeout.

This prevents a forked tracer child from keeping stdout/stderr pipes
open after the direct tracer process is killed.

(cherry picked from commit 1785f4b)

* gh-98894: Check readelf failures in test_dtrace (#152345)

Report readelf command failures directly instead of later failing with
missing-probe assertions.

(cherry picked from commit d60a677)

* gh-98894: Check tracer exit status in test_dtrace (#152893)

Fail functional dtrace and SystemTap cases directly when the tracer exits
non-zero.

(cherry picked from commit 311e7e7)

* gh-98894: Quote test_dtrace tracer subcommands (#152901)

Use shlex.join() when building tracer -c command strings
for avoiding issues with spaces.

(cherry picked from commit a159c68)

* gh-98894: Fix dtrace tests in shared builds (#153372)

Generate SystemTap probe definitions targeting libpython for shared
builds and use centralized USDT probe object discovery for readelf
and BPFTrace.

(cherry picked from commit 298bef3)

* gh-156703: Set LD_LIBRARY_PATH in SystemTap trace commands (GH-156424)

Prefix commands passed to stap -c with LD_LIBRARY_PATH via env, when
probes reside in libpython. This allows the interpreter to find
libpython when staprun does not preserve the loader path.

(cherry picked from commit faf4e52)

* gh-156722, test_dtrace: Terminate tracing processes gracefully on timeout (#156753)

Send SIGTERM to the tracing process group before falling back to SIGKILL.

(cherry picked from commit 55ecc0a)

* gh-156701: Increase the SystemTap usability timeout (#156720)

SystemTap may compile a kernel module during its usability check
(if no cached module is available). We need to allow a larger timeout
for that case.

(cherry picked from commit e1be613)

---------

Co-authored-by: stratakis <cstratak@redhat.com>
Co-authored-by: stratakis <stratakishar@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip news tests Tests in the Lib/test dir

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants