gh-149430: Fix edge-cases in profiling.sampling outputs - #149431
Conversation
The line highlights on the heatmap are driven by the URL hash and the `:target` selector. When clicking a caller/callee link for the line that was already selected, the hash doesn't change, so the browser keeps the existing target state and doesn't restart the animation. Due to this the highlight only works the first time. With this fix, line navigation goes through JavaScript. If the target URL already points to the current location, the highlight is replayed by clearing the animation, forcing style recalculation, and restoring it.
The `baseline_self` variable isn't initialized for structural elided roots. This variable is accessed later unconditionally and leads to a crash.
The child process ends up being invoked with `--diff_flamegraph` instead of the correct argument.
Documentation build overview
38 files changed ·
|
|
@ivonastojanovic can you take a look? |
ivonastojanovic
left a comment
There was a problem hiding this comment.
LGTM! Thanks @lkollar!
|
Thanks @ivonastojanovic and @lkollar ❤️ |
|
Thanks @lkollar for the PR, and @pablogsal for merging it 🌮🎉.. I'm working now to backport this PR to: 3.15. |
|
GH-149602 is a backport of this pull request to the 3.15 branch. |
…149431) (#149602) gh-149430: Fix edge-cases in `profiling.sampling` outputs (GH-149431) The line highlights on the heatmap are driven by the URL hash and the `:target` selector. When clicking a caller/callee link for the line that was already selected, the hash doesn't change, so the browser keeps the existing target state and doesn't restart the animation. Due to this the highlight only works the first time. With this fix, line navigation goes through JavaScript. If the target URL already points to the current location, the highlight is replayed by clearing the animation, forcing style recalculation, and restoring it. The `baseline_self` variable isn't initialized for structural elided roots. This variable is accessed later unconditionally and leads to a crash. The child process ends up being invoked with `--diff_flamegraph` instead of the correct argument. (cherry picked from commit 9587726) Co-authored-by: László Kiss Kollár <[email protected]>
|
profiling.samplingvisualisation outputs have edge-case failures #149430CC: @pablogsal @ivonastojanovic