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

咨询Firebase Crashlytics中art::ConditionVariable相关ANR的含义

该ANR的含义解析

这个ANR发生在应用进程退出的收尾阶段,核心原因是虚拟机销毁JavaVM实例时,等待所有非守护线程退出的过程出现阻塞,导致主线程长时间无响应触发ANR。

调用栈逐层解析:

0 libc.so (syscall+28)
1 libart.so(art::ConditionVariable::WaitHoldingLocks(art::Thread*)+140)
2 libart.so(art::ThreadList::WaitForOtherNonDaemonThreadsToExit(bool)+336)
3 libart.so(art::JII::DestroyJavaVM(_JavaVM*)+32)
4 libandroid_runtime.so(android::AndroidRuntime::start(char const*, android::Vector<android::String8> const&, bool)+1032)
5 app_process64(main+1368)
6 libc.so(__libc_init+96) 
  • 0 libc.so (syscall+28):底层系统调用进入等待状态,对应条件变量的阻塞操作
  • 1 libart.so(art::ConditionVariable::WaitHoldingLocks(art::Thread*)+140):ART虚拟机的条件变量持有锁后进入等待,等待唤醒信号
  • 2 libart.so(art::ThreadList::WaitForOtherNonDaemonThreadsToExit(bool)+336):虚拟机线程列表在等待所有非守护线程执行完成并退出
  • 3 libart.so(art::JII::DestroyJavaVM(_JavaVM*)+32):正式执行JavaVM实例的销毁逻辑
  • 4 libandroid_runtime.so(android::AndroidRuntime::start(...):Android运行时启动流程的收尾环节,实际是进程退出时的清理步骤
  • 5 app_process64(main+1368):应用进程主入口进入退出流程
  • 6 libc.so(__libc_init+96):C库初始化的收尾操作

核心结论:

这类ANR的本质是应用中存在未及时退出的非守护线程,这些线程一直处于运行状态,导致虚拟机销毁流程被卡住,主线程在处理进程退出的收尾工作时无法及时完成,最终触发ANR。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 12:45:37