Android 12真机‘Process system isn't responding’问题排查指南
Android系统ANR弹窗(Process system isn't responding)问题分析与定位
问题现象
设备在优化系统稳定性过程中出现如下弹窗:
Process system isn't responding 操作选项: ✕ Close app 🕓 Wait
伴随现象:
- 开机后首次弹窗出现后,设备偶尔卡顿20秒,弹窗可能重复出现直至重启
- 弹窗出现时常导致logcat重启,无法获取有效日志
- 非Root设备通过设置O_SYNC位捕获logcat,4天后故障复现,但初期日志无有效线索
- 相关信息显示该弹窗常与硬件故障关联
技术问题解答
1. 触发弹窗的场景、负责进程及日志缺失原因
- 触发场景:该弹窗对应系统ANR(应用无响应),当
system_server进程(系统核心服务进程,负责Activity管理、窗口管理等核心功能)在5秒内无法响应关键事件(如输入事件、系统广播、服务请求)时触发。本次日志显示,是因为手势事件的PointerEventDispatcher0服务5002ms未响应MotionEvent导致。 - 负责显示弹窗的进程:由
system_server中的ActivityManager组件创建并触发该弹窗。 - 日志缺失原因:当
system_server出现ANR时,系统可能会重启logcat服务回收资源,或ANR导致日志服务卡顿,无法及时写入日志;另外,普通logcat捕获未开启同步写入(未设置O_SYNC)时,缓存中的日志可能未及时落地就被系统重置。
2. 故障根源:硬件还是软件?
结合日志信息和现象判断,大概率为硬件故障:
- 日志显示故障始于手势事件处理失败,随后触发
system_server的ANR - 推测设备屏幕破裂导致**digitizer(屏幕数字化仪)**工作不稳定,当数字化仪无法在5秒内将触摸/手势事件传递给系统时,就会触发该ANR弹窗
- 若为软件异常,通常不会仅在手势事件触发时复现,且日志中会出现进程崩溃、死锁或资源耗尽的相关线索,本次日志未发现此类软件层面的异常信息
3. 根本原因定位方法
- 完整捕获系统日志:
- 非Root设备设置
O_SYNC位捕获logcat,确保日志实时写入存储,避免系统重启logcat导致日志丢失 - 使用命令:
egrep '(FATAL EXCEPTION|WATCHDOG|DeadSystemException|ANR)' [日志文件名].txt筛选关键异常日志
- 非Root设备设置
- 定位ANR触发点:
- 从ANR日志中提取触发进程(本次为
system_server,PID=1761),结合日志中的事件时序(如本次的手势事件、软键盘调出事件),定位触发ANR的具体系统服务
- 从ANR日志中提取触发进程(本次为
- 硬件验证:
- 若怀疑屏幕数字化仪故障,可通过替换屏幕测试,或使用硬件检测工具检查触摸事件的响应率和稳定性
- 查看设备底层硬件驱动日志(部分设备可通过
dmesg获取),确认数字化仪驱动是否有异常上报
- 软件层面排查:
- 检查
system_server进程的CPU、内存占用情况,排查是否存在内存泄漏、死锁导致的进程卡顿 - 确认系统版本是否存在已知ANR漏洞,尝试更新系统或回滚到稳定版本测试
- 检查
内容的提问来源于stack exchange,提问作者Keith
相关产品推荐
相关产品推荐

