Skip to content

Android 13 aarch64包_Unwind_Backtrace获取堆栈时会发生二次崩溃,需将ndk从21升级到23或手动升级libunwind.a #149

@Mr-JingShi

Description

@Mr-JingShi
Image 将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则不会发生二次崩溃。
Image
从ndk升级记录来看,ndk23使用LLVM的libunwind.a全面替换了libgcc里的unwind。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions