You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 12设备libc.so abort崩溃问题求助(无法复现)

Android 12设备上com.yy.reader的Native崩溃分析求助

问题概述

  • 仅在Android 12设备上出现com.yy.reader应用的Native崩溃,无法复现,无相关排查线索,请求协助分析

开发环境

  • Android Studio Arctic Fox | 2020.3.1
  • CompileSdkVersion:31
  • TargetSdkVersion:28

崩溃日志

Process Name: 'com.yy.reader'
Thread Name: 'ReferenceQueueD'
pid: 16810, tid: 16819  >>> com.yy.reader <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00fffffefffffff0
  x0   0000007c8cc166c0  x1   00ffffff00000000  x2   0000000000000000  x3   0000000000000000
  x4   0000000000000010  x5   000000795ebf2754  x6   0000000000000001  x7   0001232700012354
  x8   02ffffff00000000  x9   02ffffff00000000  x10  00000000189a1128  x11  0000000000000000
  x12  00000000000000e0  x13  000123ab000123c0  x14  003a847bf79640ed  x15  000032b25d89e598
  x16  0000007c82bd0540  x17  0000007c8cb81e38  x18  000000795e5fa000  x19  00ffffff00000000
  x20  0000000000000000  x21  0000007c8cc166c0  x22  0000000000000000  x23  000000001b551758
  x24  0000000070d9ab90  x25  000000001b551798  x26  0000000000000000  x27  00000079dd018000
  x28  0000000000000043  x29  000000795ebf26e0  x30  0000007c86f01858
  sp   000000795ebf26d0  pc   0000007c8cb8754c  pstate 0000000060001000
  v0   00000000000000000000000000000000  v1   00012e2e00012e5500012e94000123f9
  v2   00000079e08ce1d000000079e08ce180  v3   00000000000001400000000000000140
  v4   000000000002413000000000000240e0  v5   000024130000240e0000240900002404
  v6   00000000000000000000000000000000  v7   00000000000000008060180680601806
  v8   00000000000000000000000000000000  v9   00000000000000000000000000000000
  v10  00000000000000000000000000000000  v11  00000000000000000000000000000000
  v12  00000000000000000000000000000000  v13  00000000000000000000000000000000
  v14  00000000000000000000000000000000  v15  00000000000000000000000000000000
  v16  c0300c03c0300c03c0300c03c0300c03  v17  80000000000000008000000000000000
  v18  80000000000000000000000000000000  v19  000000000000000000000000ebad8083
  v20  000000000000000000000000ebad8084  v21  000000000000000000000000ebad8085
  v22  000000000000000000000000ebad8086  v23  000000000000000000000000ebad8087
  v24  000000000000000000000000ebad8088  v25  000000000000000000000000ebad8089
  v26  000000000000000000000000ebad808a  v27  000000000000000000000000ebad808b
  v28  000000000000000000000000ebad808c  v29  000000000000000000000000ebad808d
  v30  000000000000000000000000ebad808e  v31  006d005f00790061006c00650064005f
  fpsr 00000010  fpcr 00000000
    #00 pc 000000000000654c  /apex/com.android.runtime/lib64/bionic/libc.so (_ZN5scudo9AllocatorINS_13AndroidConfigEXadL_Z21scudo_malloc_postinitEEE10deallocateEPvNS_5Chunk6OriginEmm+100)
    #01 pc 0000000000119854  /apex/com.android.i18n/lib64/libicui18n.so (_ZN6icu_6812RegexPattern3zapEv+212)
    #02 pc 0000000000119950  /apex/com.android.i18n/lib64/libicui18n.so (_ZN6icu_6812RegexPatternD2Ev+36)
    #03 pc 00000000000092e4  /apex/com.android.i18n/lib64/libicu_jni.so
    #04 pc 0000000000003978  /apex/com.android.art/javalib/arm64/boot-core-libart.oat
    --- --- --- ---

崩溃分析与排查方向

从崩溃栈和信号信息来看:

  • 崩溃发生在ReferenceQueueD线程(Java引用回收相关线程),信号为SIGSEGV(段错误),错误码SEGV_MAPERR,表明代码尝试访问了未被映射到进程地址空间的内存地址00fffffefffffff0。
  • 调用链显示崩溃触发于ICU库的RegexPattern对象销毁过程:先是调用RegexPattern::zap()释放内部资源,随后进入析构函数,最终在scudo内存分配器的deallocate方法中触发内存访问错误。

排查建议

  • 检查应用中使用正则表达式的场景,重点关注频繁创建/销毁Pattern、Matcher对象的代码,确认是否存在多线程下的内存非法操作(比如对象已被GC回收后,JNI层仍尝试访问其内存)。
  • 虽然应用的TargetSdkVersion为28,但Android 12的ART虚拟机和系统ICU库有版本更新,可能存在兼容性问题。建议升级Android Studio到较新的稳定版本,同时检查是否依赖了第三方ICU相关库,考虑替换为系统内置的兼容版本。
  • 启用Native内存检测工具(如Android Studio的Memory Profiler),尝试模拟用户场景复现问题,捕捉内存异常行为。
  • 若应用存在JNI层直接操作ICU对象的代码,检查内存管理逻辑,确认是否存在未正确引用对象、重复释放内存等问题。

内容的提问来源于stack exchange,提问作者mrcoding

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 18:52:37