Reliable Stack Traces, the Reality of Myth
summary
Shows two concrete tools for x86_64: a dynamic validator that checks DWARF unwind bytecode against actual register/stack states (finds compiler and inline-asm bugs, caught an off‑by‑one in glibc and GCC optimizer cases), and a synthesis-from-binary engine that generates eh_frame entries for binaries that lack debug info. Also compiles unwind bytecode to native x86_64 stubs integrated into libunwind (precompile eh_frame→native code), yielding about a 25× speedup for DWARF-based unwinding.
AI-written summary · about
chapters (9)
- 0:00Introduction to dwarf
- 2:32How dwarf tables work
- 7:35Challenges with dwarf
- 11:52Validating unwinding tables
- 16:57Dynamic validation tool
- 22:58Synthesizing tables
- 29:43Performance improvements
- 34:03Dwarf debug line and gsym
- 40:02Q&A and discussion
related talks
01h 01m“How C++ Debuggers Work”
25mSource-level debugging of compiler-optimised code: ill-posed, but not impossible
53mFrom Within: Compiler Testing and Validation via Compilers
23mAn In-Depth Analysis of Disassembly on Full-Scale x86/x64 Binaries
24mMeta-tracing Interpreters in WebAssembly
36mUnwinding the Stack for Fun and Profit
01h 00mJust Enough Assembly for Compiler Explorer
21mDemystify Today's Binary Disassembling and How Modern ABI Makes it Easier
