You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm trying to make a replacement for perf script with linux-perf-data, framehop, and wholesym. Thank you for providing the building blocks!
Currently I'm running into an issue with framehop giving me truncated stacks when using ModuleUnwindData::DebugFrame. It works great with ModuleUnwindData::EhFrameHdrAndEhFrame, which is how it works out of the box for rust programs with samply.
For Rust I'm getting TruncatedStackMarker, but for Go I'm also seeing just short stacks with a couple of frames and that's it.
My reference is perf script linked against libdw (libunwind likes to truncate as well, so I'm avoiding it).
I'm on aarch64-linux (via qemu VM on macOS).
The text was updated successfully, but these errors were encountered:
I'm trying to make a replacement for perf script with linux-perf-data, framehop, and wholesym. Thank you for providing the building blocks!
Excellent! This was one of the applications I had in mind when building out these pieces. I wanted a fast replacement for perf script for the Rust flamegraph utility in particular, but I'm sure it would be useful in lots of other cases, too.
My first attempt at this was in the linux-perf-stuff repo, and the process of writing it informed the API of the wholesym crate. I haven't touched the linux-perf-stuff repo in a while, and you may already have a solution that's further along.
By the way, KernelSymbols::new_from_running_kernel is another piece that you may want to use in your tool, and it's not packaged in a separate crate yet.
Currently I'm running into an issue with framehop giving me truncated stacks when using ModuleUnwindData::DebugFrame. It works great with ModuleUnwindData::EhFrameHdrAndEhFrame, which is how it works out of the box for rust programs with samply.
Hmm, that's interesting. I haven't put the ModuleUnwindData::DebugFrame path through a whole lot of testing; I only really tested it with Go binaries on macOS arm64. It was working mostly fine on those, except that it couldn't unwind from the stack-switching-for-FFI code because of incorrect DWARF CFI on arm64 for those functions, from what I recall.
For Rust I'm getting TruncatedStackMarker, but for Go I'm also seeing just short stacks with a couple of frames and that's it.
My reference is perf script linked against libdw (libunwind likes to truncate as well, so I'm avoiding it).
I'm on aarch64-linux (via qemu VM on macOS).
Okay. So then I'll try to reproduce this by making samply prefer .debug_frame over .eh_frame, and then running samply load perf.data on a perf profile of a Rust binary with debug information. And then once that works I can take a look at the Go case.
I'm trying to make a replacement for
perf script
withlinux-perf-data
,framehop
, andwholesym
. Thank you for providing the building blocks!Currently I'm running into an issue with
framehop
giving me truncated stacks when usingModuleUnwindData::DebugFrame
. It works great withModuleUnwindData::EhFrameHdrAndEhFrame
, which is how it works out of the box for rust programs withsamply
.For Rust I'm getting
TruncatedStackMarker
, but for Go I'm also seeing just short stacks with a couple of frames and that's it.My reference is
perf script
linked againstlibdw
(libunwind
likes to truncate as well, so I'm avoiding it).I'm on
aarch64-linux
(via qemu VM on macOS).The text was updated successfully, but these errors were encountered: