]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
gh-138122: Skip threads on EPERM in blocking mode profiler (GH-143368)
authorPablo Galindo Salgado <Pablogsal@gmail.com>
Sat, 3 Jan 2026 14:37:16 +0000 (14:37 +0000)
committerGitHub <noreply@github.com>
Sat, 3 Jan 2026 14:37:16 +0000 (15:37 +0100)
commit27434c68f8c9d8f5e3e1708948a339999172a4bc
treec5268da2211b9512a5328d577af030cc03b8ebf8
parent2c39b9d2f2ed8fb719d89f895dba114fb9096826
gh-138122: Skip threads on EPERM in blocking mode profiler (GH-143368)

When using blocking mode in the remote debugging profiler, ptrace calls
to seize threads can fail with EPERM if the thread has exited between
listing and attaching, is in a special kernel state, or is already being
traced. Previously this raised a RuntimeError that was caught by the
Python sampling loop,and retried indefinitely since EPERM is
a persistent condition that will not resolve on its own.

Treat EPERM the same as ESRCH by returning 1 (skip this thread) instead
of -1 (fatal error). This allows profiling to continue with the threads
that can be traced rather than entering an endless retry loop printing
the same error message repeatedly.
Misc/NEWS.d/next/Library/2026-01-02-17-26-33.gh-issue-143368.m3EF9E.rst [new file with mode: 0644]
Modules/_remote_debugging/threads.c