SWT手机重启问题分析

admin 2023年7月24日11:53:52评论17 views字数 1655阅读5分31秒阅读模式


一、SWT 手机重启问题简介
二、SWT 手机重启问题处理流程
三、SWT 手机重启问题的原因
四、SWT 手机重启问题分析流程
五、SWT 手机重启问题分析举例
六、Android O以上导 Log 注意事项

一、 SWT 手机重启问题简介

SWT(Software Watch Dog ) 主要用来监控SystemServer重要线程/Service 的运行情况。如果发现其阻塞超过 60s ,看门狗进程就会把系统重启,进而保证系统可以恢复到正常状态。

判断阻塞的方法有如下两种。

1.利用 Services 注册monitor 去Check

主要是: AMS、 Foreground Thread

2. 发送handler 到重要的Loop 线程来Check 是否阻塞。

主要是: Main ThreadUI ThreadIO ThreadDisplay ThreadWMS 、Other Services

3.SWT 判断阻塞的方法

SWT手机重启问题分析

SWT 判断阻塞的方法

二、 SWT 手机重启问题处理流程

SWT 处理流程:

1.每半分钟30scheck 一次system_server 进程

检查系统是否卡住,如果卡住,dump 一次system_server 的backtrace

2.一分钟卡住后kill,并重新计数

如果卡住,第二次dump,并kill掉 system_server进程 ,否则重新计时。

3.SWT 处理大致流程如下

SWT手机重启问题分析

SWT 处理流程

三、 SWT 手机重启问题的原因

导致 SWT重启原因的原因有很多种。

1.主要导致的原因如下:

SWT手机重启问题分析

检查SWT 原因分类

四、 SWT 手机重启问题分析流程

首先搜索关键 watchdog,查看是否有重启发生。

SWT手机重启问题分析

SWT 流程分析

五、SWT 手机重启问题分析举例

1.分析 trace ,确认线程关系

线程被 Block 搜索关键字 held by

SWT手机重启问题分析

确认线程关系

2.线程被 Waiting 结合代码分析。

SWT手机重启问题分析

确认线程关系

3.线程死锁

确认Block的线程是否有闭环的死锁关系。

SWT手机重启问题分析

线程死锁

SWT手机重启问题分析

线程死锁

4.Binder的Server 端卡住

线程状态 Native,并且callstack中含有一对

IPCThreadState::waitForResponse
IPCThreadState::talkWithDriver
的明显特征。

SWT手机重启问题分析

Bind的Server端卡住

SWT手机重启问题分析

Bind的Server端卡住

5.SurfaceFlinger 卡住导致重启

搜索关键字 I watchdog ,
查看是否有 surfaceflinger hang,默认卡住40s,就会重启。

SWT手机重启问题分析

SurfaceFlinger 卡住

6.Native 方法执行时间过长导致重启

线程状态 Native,查看是否有
PowerManagerService.nativeSetAutoSuspend

SWT手机重启问题分析

Native 方法执行时间过长

7.Zygote Fork 进程时卡住

线程状态Native,查看是否有
Process.zygoteSendArgsAndGetResult

SWT手机重启问题分析

Zygote Fork 进程时卡住

8.Dump 时间过长

Dump 超过60s 可能会引起手机重启。
搜索关键字 dumpStackTraces 或 dumpStackTraces process

SWT手机重启问题分析

Dump 时间过长

9.前面有ANR 发生

SWT手机重启问题分析

前面有ANR 发生

SWT手机重启问题分析

前面有ANR 发生

10.前面有fatal JE NE KE 等Exception发生

SWT手机重启问题分析

前面有fatal JE NE KE 等Exception发生

11.自动化测试脚本有call dumpsys 去dump 系统信息

SWT手机重启问题分析

自动化测试脚本有call dumpsys 去dump 系统信息

六、 Android O以上导 Log 注意事项

Android O 以上的 mtklog 和db 不在同一个目录,需要执行以下adb命令 导Log.

//1. 导 MTK log 
adb pull /sdcard/mtklog
//2. 导 AEE log,如果没有,请执行第3步
adb pull /data/aee_exp
//3.导 data 下MTK缓存 的aee log
adb pull /data/vendor/mtklog/aee_exp

原文始发于微信公众号(哆啦安全):SWT手机重启问题分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年7月24日11:53:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   SWT手机重启问题分析https://cn-sec.com/archives/1900871.html

发表评论

匿名网友 填写信息