mirror of
https://github.com/python/cpython.git
synced 2026-01-11 01:40:06 +00:00
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. |
||
|---|---|---|
| .. | ||
| clinic | ||
| _remote_debugging.h | ||
| asyncio.c | ||
| binary_io.h | ||
| binary_io_reader.c | ||
| binary_io_writer.c | ||
| code_objects.c | ||
| frame_cache.c | ||
| frames.c | ||
| module.c | ||
| object_reading.c | ||
| subprocess.c | ||
| threads.c | ||