mirror of
https://github.com/python/cpython.git
synced 2025-12-08 06:10:17 +00:00
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. |
||
|---|---|---|
| .. | ||
| sampling | ||
| tracing | ||
| __init__.py | ||