Hi Milian,

> I am regularly seeing broken backtraces for samples where I have 
> the gut feeling that missing reported ELFs are to blame. But we report 
> everything, except for scenarios where the mmap events seemingly overlap.

Actually, at least for perfparser that's not quite true. When perfparser 
encounters an overlap error, it will throw out the entire set of mappings and 
restart reporting, with the addresses from the current sample (see 
PerfSymbolTable::reportElf() and PerfSymbolTable::clearCache()). If that still 
gives you overlapping ranges, it means perf has not sent all the mmap events 
and therefore we're reporting the wrong ELF for some address in your sample. 
That wrong ELF may be larger than the one we actually want and therefore it can 
overlap some other ELF an address in your sample points to.

I've seen that happen. Make sure to keep your sample rate low enough to prevent 
perf from dropping anything.

I realize we could optimize the reporting a bit, with the dwfl_report_end 
callback Mark mentioned, but if you have addresses into two overlapping ELFs in 
one sample, that's fundamentally impossible to unwind.

Ulf

Reply via email to