We have a binary with a HUGE .dSYM -- just under 4Gb, release build of binary itself is 50Mb. Takes 1-2 hours just to run dump_syms on it, but eventually symbols are produced (unless machine dies from swap running out of disk space :)). Resulting sym file is 50Mb.The problem we have is when walking the stack on socorro. It appears that as soon as stack walker finds itself in the main executable, it stops walking the stack further. So we have very short stacks -- just one line deep into interesting code.When running minidump_stackwalker built with trunk of chromium/breakpad repository (and same with older breakpad build) I get errors:2015-12-12 01:24:07: minidump.cc:1415: ERROR: MinidumpThread has a memory region problem, 0x0+0x0, RVA 0x0x0
2015-12-12 01:24:14: minidump_processor.cc:237: ERROR: No memory region for /home/socorro/primaryCrashStore/20151212/name/b1/eb/b1eb441a-7d81-4090-9865-11cf42151212.dump:32/37 id 0x1af2762015-12-12 01:24:14: basic_code_modules.cc:93: INFO: No module at 0x02015-12-12 01:24:14: stackwalker_x86.cc:621: ERROR: Can't get caller frame without memory or stackDump itself is generated with crashpad built from the code checked out in the middle of september.
All system and other symbols are found.Apple crash report generated from the same crash has full stack.Crashes for smaller and saner executables get walked correctly and produce the same number of frames as apple reports.I haven't tried updating all pieces to latest source yet (dump_syms and crashpad libraries), haven't noticed any relevant commits that might affect it.But otherwise where else should I be looking?
Ok, I narrowed it down a bit to CFI section.All pieces updated to trunk (dump_syms and minidump_stackwalker from breakpad, crashpad_handler and client code from crashpad). All memory region ERRORs are gone now.
If I hide all symbols from stackwalker, I see full stack (but not symbolicated obviously).If I generate main symbol with no CFI section (dump_syms -c, either giving it dSYM or omitting it completely), I see full stack, but no source locations and C++ function names are mangled.If I generate main symbol with CFI section (but omitting dSYM), I'm back to one frame.
All symbols except the one for main executable are hidden during those runs...
If I hide all symbols from stackwalker, I see full stack (but not symbolicated obviously).If I generate main symbol with no CFI section (dump_syms -c, either giving it dSYM or omitting it completely), I see full stack, but no source locations and C++ function names are mangled.If I generate main symbol with CFI section (but omitting dSYM), I'm back to one frame.You should be giving both your main executable and, via -g, its companion .dSYM to dump_syms for best results. That should give you demangled names with full namespace and class qualification and parameter types. It should also give you source file names and line numbers, and unless you use -c, CFI.
If you’re doing all of this and are still getting single-frame walks, then it does indeed sound like a CFI problem, but it’d be more appropriate to discuss on google-breakpad-dev.All symbols except the one for main executable are hidden during those runs...Have you generated symbols (dump_syms) for any of the other modules?