dvc94ch / dvc94ch/cargo-trace

can't unwind through trampoline created by uprobe

Open
#19 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
40
Forks
0
PR merge metrics
No merged PRs in 30d

Description

Hi,

I'm writing a eBPF-based profiler for C++ and Lua script recently, I unwind stacks in BPF similar to what cargo-trace does.

I found that stask frames always break when rip goes into address range of uprobes, because no unwind rules for uprobe trampoline in dwarf.

> 7ffdb018c000-7ffdb018e000 r-xp 00000000 00:00 0 [vdso]
7fffffffe000-7ffffffff000 --xp 00000000 00:00 0 [uprobes]
ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0 [vsyscall]

I have no idea how to unwind through it. Any suggestions?

Contributor guide

No contributing guide indexed for this repository

Research direction

No source file, test, or entry point is named. Start by searching cargo-trace for uprobe and stack-unwinding handling, then reproduce the reported break with the described eBPF profiler; done means establishing and validating a way to unwind past uprobe trampoline frames.

Written by the indexing model from the issue text.

Assessment

Tech stack
lua, rust
Domain
observability-sre, operating-systems
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.