
(1)访问的崩溃地址设置到0x00000001(2)将dump_ok恒定设置为0
让程序流进入xc_fallback_get_emergency
在Android 13设备上触发native崩溃后,_Unwind_Backtrace函数会引起二次崩溃,logcat输出如下:
08-08 17:51:40.346 1739 7301 I WindowManager: WIN DEATH: Window{3c5f695 u0 xcrash.sample/xcrash.sample.MainActivity}
08-08 17:51:40.346 1739 7301 W InputManager-JNI: Input channel object '3c5f695 xcrash.sample/xcrash.sample.MainActivity (client)' was disposed without first being removed with the input manager!
08-08 17:51:40.346 1739 16157 I ActivityManager: Process xcrash.sample (pid 28635) has died: fg TOP
08-08 17:51:40.347 1739 1826 I libprocessgroup: Successfully killed process cgroup uid 10528 pid 28635 in 0ms
08-08 17:51:40.349 834 834 I Zygote : Process 28635 exited due to signal 11 (Segmentation fault)
调试后发现将ndk升级到23则不会发生二次崩溃。

从ndk升级记录来看,ndk23使用LLVM的libunwind.a全面替换了libgcc里的unwind。