mozilla / dump_syms

Rewrite of breakpad dump_syms tools in Rust

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Inline stacks for rust standard library seem to be missing

jrmuizel opened this issue · comments

See https://crash-stats.mozilla.org/report/index/ae968262-7b1b-4835-885e-39b4d0220909

The crash report has alloc::alloc::handle_alloc_error() being called by cert_storage::load_crlite_stash_from_reader_into_map(..) but load_crlite_stash_from_reader_into_map doesn't call handle_alloc_error. There should be some frames from Vec there instead.

This is a counter example where we do get some inline stacks from the standard library:
https://crash-stats.mozilla.org/report/index/413609a1-8c3a-42b1-8897-89cf70220909

For future reference, this is at 0x4cb7f02 in xul.pdb E0D4358DF1F2276F4C4C44205044422E1.

pdb-addr2line also doesn't have the frames from Vec:

% pdb-addr2line -pCfi -e /Users/mstange/Downloads/xul.pdb 0x0000000004cb7f02
cert_storage::load_crlite_stash_from_reader_into_map(ref_mut$<dyn$<std::io::Read> >, std::collections::hash::map::HashMap<alloc::vec::Vec<u8,alloc::alloc::Global>,std::collections::hash::set::HashSet<alloc::vec::Vec<u8,alloc::alloc::Global>,std::collections::hash::map::RandomState>,std::collections::hash::map::RandomState>*) at /builds/worker/checkouts/gecko/security/manager/ssl/cert_storage/src/lib.rs:1193

The line is using the vec![] macro. Do you know what that macro expands to? Maybe they copied the oom check right into the macro, though that seems unlikely.

It seems to expand to $crate::vec::from_elem($elem, $n)

Ok, so I would have expected the compiler to generate debug info that says that we're in that function. I'm not sure why it didn't.

Let's wait for this problem to show up again before we spend more time on it.