10 Commits

Author SHA1 Message Date
Pablo Galindo Salgado 65fbec64f6 [3.15] gh-151613: Fix remote debugging frame cache ABA (#152448)
gh-151613: Fix remote debugging frame cache ABA (#151614)

The remote debugging frame cache previously used only the last_profiled_frame address as its cache anchor. If a frame returned and a later frame reused the same _PyInterpreterFrame address, the profiler could accept a stale cache entry and splice parent frames from a different call chain into the current stack.

This adds a last_profiled_frame_seq counter next to last_profiled_frame, increments it when the anchor advances, stores it in frame cache entries, and validates cache hits against both the frame address and the sequence. Cache miss walks now copy stack chunks before storing new cache entries so stored continuations come from a stable snapshot. The new regression test exercises alternating call chains and checks that cached stacks never contain frames from both branches.

(cherry picked from commit 8cda6ae2f1)
2026-06-27 17:42:31 +00:00
Pablo Galindo Salgado d6d850df89 gh-138122: Don't sample partial frame chains (#141912) 2025-12-07 15:53:48 +00:00
Pablo Galindo Salgado 572c780aa8 gh-138122: Implement frame caching in RemoteUnwinder to reduce memory reads (#142137)
This PR implements frame caching in the RemoteUnwinder class to significantly reduce memory reads when profiling remote processes with deep call stacks.

When cache_frames=True, the unwinder stores the frame chain from each sample and reuses unchanged portions in subsequent samples. Since most profiling samples capture similar call stacks (especially the parent frames), this optimization avoids repeatedly reading the same frame data from the target process.

The implementation adds a last_profiled_frame field to the thread state that tracks where the previous sample stopped. On the next sample, if the current frame chain reaches this marker, the cached frames from that point onward are reused instead of being re-read from remote memory.

The sampling profiler now enables frame caching by default.
2025-12-06 22:37:34 +00:00
Alper dc4a7077ac InternalDocs: Fix outdated struct references in frames.md (#132613)
Docs: Fix outdated struct references in frames.md

Co-authored-by: alperyoney <alperyoney@fb.com>
2025-04-20 23:24:21 +01:00
Tomas R. d07e9ebbe8 gh-131306: Remove unused code related to BINARY_SUBSCR (#131307) 2025-03-16 16:37:29 +00:00
Nybblista e9d210bfc2 gh-131170: fix duplicated sections in frames.md file (#131177)
fix duplicated sections in frames.md file

In the frames.md file at InternalDocs, change the first
duplicated title to Specials, and remove unnecessary content
under the Specials section.
2025-03-13 16:59:19 +03:00
Yan Yanchii c6563f3f22 gh-119786: Fix typos in InternalDocs/frames.md (#128275)
Fix typos in `InternalDocs/frames.md`
2024-12-26 20:09:15 +05:30
Bénédikt Tran 04673d2f14 gh-119786: cleanup internal docs and fix internal links (#127485) 2024-12-01 17:12:22 +00:00
Irit Katriel d0bfff47fb gh-119786: [doc] more consistent syntax in InternalDocs (#125815) 2024-10-21 23:37:31 +01:00
Irit Katriel c87876763e gh-119786: move frames documentation to InternalDocs and add details (#121009) 2024-06-26 13:18:20 +01:00