Skip to content

Conversation

@pablogsal
Copy link
Member

@pablogsal pablogsal commented Dec 7, 2025

The sampling profiler counted every frame occurrence in a stack for
cumulative statistics. For recursive functions appearing N times in a stack,
this meant counting N instead of 1, causing cumul% to exceed 100%. A function
recursing 500 deep in every sample would show 50000% cumulative presence.

The fix tracks seen locations per sample using a reused set, ensuring each
unique (filename, lineno, funcname) is counted once per sample. This matches
the expected semantics: cumul% represents the percentage of samples where a
function appeared on the stack, not the sum of all frame occurrences.

…ampling profiler

The sampling profiler counted every frame occurrence in a stack for
cumulative statistics. For recursive functions appearing N times in a stack,
this meant counting N instead of 1, causing cumul% to exceed 100%. A function
recursing 500 deep in every sample would show 50000% cumulative presence.

The fix tracks seen locations per sample using a reused set, ensuring each
unique (filename, lineno, funcname) is counted once per sample. This matches
the expected semantics: cumul% represents the percentage of samples where a
function appeared on the stack, not the sum of all frame occurrences.
kmk142789
kmk142789 previously approved these changes Dec 7, 2025
pablogsal and others added 3 commits December 9, 2025 13:15
Resolved conflicts by keeping both:
- Recursive function deduplication (from pythongh-142374 branch)
- Opcode tracking with extract_lineno/normalize_location (from upstream)
@pablogsal pablogsal merged commit 1356fbe into python:main Dec 12, 2025
46 checks passed
@pablogsal pablogsal deleted the gh-142374 branch December 12, 2025 00:50
fatelei pushed a commit to fatelei/cpython that referenced this pull request Dec 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants