开关机压力测试时卡 bootanimation 分析

N久前写的技术分析报告,现在发出来,希望能帮到有需要的人。

一、现象描述

  做 开关机压力测试,重启时会概率性卡在开机logo处。
  对 system server 发送 signal 6 后能恢复启动,正常进入 launcher。
  复现概率为 16/70000。

二、问题分析

1、分析 log

  初步分析开机log,检查system server主线程,发现每次都随机卡在system_server 启动的不同阶段。
  有卡在 input method 启动阶段,system server 直到收到人为发送的 signal 6,才继续启动下一个 service:Accessibility Manager。

01-01 08:00:09.182 2093 2093 I SystemServer: Input Method Service
01-03 09:06:18.032 2093 2093 I SystemServer: Accessibility Manager

  有卡在 PMS 扫描 apk 阶段:

 01-01 08:00:08.095 2101 2101 D PackageManager: Parsing: /system/priv-app/SystemUI
 01-03 22:48:19.604 2101 2101 D PackageManager: Parsing: /system/priv-app/UsbInfoStatics

  还有卡在 launcher 启动阶段。

2、具体分析

  由于 system server 主线程卡住, log 中也没有有用信息可以分析,这时可以打印system server 的调用栈,通过分析 system server 的调用栈就能确切知道出问题时 system server 卡在什么地方。
  打印调用栈的方法:
  (1)mkdir /data/anr;
  (2)touch /data/anr/traces.txt;
  (3)chmod -R 777 /data/anr;
  (4)kill -3
  调用栈会打印到/data/anr/traces.txt 里面。

  通过抓取 traces 文件,可以发现 system server 主线程都 block 在同一个地方。问题豁然开朗。
  继续分析 traces.txt。
  Traces.txt 中 System server 的 main thread 调用栈如下图。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值