javierhonduco / lightswitch

CPU profiler for Linux written in Rust
MIT License
7 stars 3 forks source link

symbolizer: Handle addresses with many symbols #19

Closed javierhonduco closed 7 months ago

javierhonduco commented 7 months ago

Symbolization was completely broken if inline functions were present because the code assumed that every program counter maps to exactly one symbol, but that's not true.

We didn't see this often because some applications we ran had no inlined functions, but it was very apparent with Ruby and Fortran code, especially with O2 and O3, as the compiler will start inlining at these levels more.

Test Plan

Tested with basic_f77_stack_O2.

before image

after

image

javierhonduco commented 7 months ago

cc @gmarler who reported this issue!