I am working on integrating breakpad for native crash reporting of an Android app which already has a significant native code base that is built into a single so. I have added breakpad static lib to this and I am able to generate dmp files (crash triggered from a test function). However the native dmp is small (3-4 KB) and minidump_stackwalker gives following errors:
myadav11$ minidump_stackwalk 5f9221b3-75f2-c305-2dde0eb7-1724e335.dmp
minidump.cc:4811: INFO: Minidump opened minidump 5f9221b3-75f2-c305-2dde0eb7-1724e335.dmp
minidump.cc:4931: INFO: Minidump not byte-swapping minidump
minidump.cc:5414: INFO: GetStream: type 15 not present
minidump.cc:5414: INFO: GetStream: type 7 not present
minidump.cc:5414: INFO: GetStream: type 7 not present
minidump.cc:5414: INFO: GetStream: type 1197932545 not present
minidump.cc:5414: INFO: GetStream: type 6 not present
minidump.cc:5414: INFO: GetStream: type 1197932546 not present
minidump.cc:5414: INFO: GetStream: type 4 not present
minidump.cc:5414: INFO: GetStream: type 14 not present
minidump.cc:5414: INFO: GetStream: type 5 not present
minidump.cc:5414: INFO: GetStream: type 3 not present
minidump_processor.cc:158: ERROR: Minidump 5f9221b3-75f2-c305-2dde0eb7-1724e335.dmp has no thread list
minidump_stackwalk.cc:97: ERROR: MinidumpProcessor::Process failed
minidump.cc:4783: INFO: Minidump closing minidump
myadav11$I have an Android breakpad test app which uses same compiler and linker flags (and the test function) and is able to generate a proper dmp file which is about 300 KB. I have tried to debug breakpad code using Android Studio C++ debugger and I notice that the child process breakpad spawns, finishes with error and it seems like it wont be easy to attach debugger to the child process simultaneously.
Any help would be appreciated.
For the benefit of the users I can share how I resolved this.
I had to use logging to track failing method/statement in the minidump dumper code. It was failing in fetching Floating point registers -> https://github.com/google/breakpad/blob/master/src/client/linux/minidump_writer/linux
_ptrace_dumper.cc
info->GetFloatingPointRegisters(&io.iov_base, &io.iov_len);
if (sys_ptrace(PTRACE_GETREGSET, tid, (void*)NT_FPREGSET, (void*)&io) == -1) {
return false;
}
if statement was failing for Android/Arm build as breakpad was never tested on APP_PLATFORM := android-21. Now I see that this has been fixed this on latest master.