Comments (10)
No problem: I'll just mail you my laptop, and then it'll work for both of us!
from blazesym.
Realized that I was going by the line numbers in your original diff
, which at the present moment is in symbolize_gsym
, so wasn't testing symbolize_dwarf
at all. Same result as you now.
Is this worth focusing on, if we'll use gimli
soon?
from blazesym.
Is this issue solved? I tried reproducing, and the assertion succeeds-- it finds that factorial
was defined on line 8 of test-stable-addresses.c
.
from blazesym.
Is this issue solved? I tried reproducing, and the assertion succeeds-- it finds that
factorial
was defined on line 8 oftest-stable-addresses.c
.
Interesting. It still does not work for me. I haven't looked into it more than that, though.
Edit: CI seems to concur that it's not working: https://github.com/d-e-s-o/blazesym/actions/runs/5046482841/jobs/9052058258#step:6:165
from blazesym.
No problem: I'll just mail you my laptop, and then it'll work for both of us!
;-) Could you attach your system's data/test-dwarf.bin
, then I could compare binaries? I suspect this will all get addressed once we switch to gimli
, which hopefully is not so far out anymore at this point.
from blazesym.
Ah, that explains it. Thanks!
Is this worth focusing on, if we'll use
gimli
soon?
I was just curious if there was some non-deterministic behavior causing it to work on your system but not mine that I'd have wanted to investigate. But given that as you state it's not working for you either it's probably best to just wait for the gimli
conversion.
from blazesym.
The root of the problem is that ElfCacheEntry::new
calls DwarfResolver::from_parser_for_addresses
with an empty addresses
argument:
Line 63 in a40d947
That function never gets called again, so DwarfResolver::addr_to_dlcu
, and thus DwarfResolver::debug_line_cus
, is always empty.
from blazesym.
Oh nice, thanks for digging into it! Feel free to open a PR if you have a fix in mind. Otherwise I'll look into it soon.
from blazesym.
So it seem the empty addresses stuff is actually fine: the semantics are that if no addresses are provided, all line information is gathered. The problem is more that we see an invalid extended op code, can't handle it, and then swallow the error (!!!).
invalid extended opcode (ip=0x23, insn_size=0x0)
So yes, this will need to wait until we transition to gimli
...
from blazesym.
Ach, you're right. I briefly looked into debugging it, but I've no experience with the DWARF FSM: definitely worth waiting for gimli
.
from blazesym.
Related Issues (20)
- Support `debuginfod`
- Support breakpad format?
- Support/honor mini debug information?
- Support `DebugFission` format? HOT 1
- Migrate from `log` to `tracing` HOT 6
- Correctly handle `STT_GNU_IFUNC` ELF symbols HOT 1
- Infer build ID section based on section type HOT 1
- Niceify `Debug` representation of various types
- Add `*_sorted` variants of symbolization APIs HOT 6
- Use `/tmp/perf-[pid].map` HOT 3
- Add more context to errors HOT 1
- ELF symbolization of `__libc_init_first` from glibc doesn't work anymore HOT 7
- inspect: Provide access to all discovered symbols HOT 2
- inspect: Proper file offset reporting for DWARF HOT 1
- enhance blazecli with more functionality
- API for single address symbolization HOT 3
- Perform fewer steps on "local" system for remote symbolization
- Move C API into separate crate? HOT 5
- Remove `symbolize::Builder::enable_debug_syms()`? HOT 1
- Support pre-populating caches (pre-parsing data structures etc.)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from blazesym.