SWT 导致手机重启问题分析

作者: 程序员Android1 | 来源:发表于2018-05-03 11:57 被阅读657次

本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:

1.SWT 手机重启问题 (阻塞60s 系统重启)简介
2.SWT 手机重启问题处理流程
3.SWT 手机重启问题的原因
4.SWT 手机重启问题分析流程
5.SWT 手机重启问题分析举例
6.Android O 导出重启 Log 注意事项

欢迎关注微信公众号:程序员Android
公众号ID:ProgramAndroid
获取更多信息

微信公众号:ProgramAndroid

我们不是牛逼的程序员,我们只是程序开发中的垫脚石。
我们不发送红包,我们只是红包的搬运工。

1. SWT 手机重启问题 (阻塞60s 系统重启)简介

SWT(Software Watchdog ) 主要用来监控SystemServer 重要线程/Service 的运行情况。
如果判断阻塞 60s ,就会把系统重启,来保证系统恢复正常状态。

判断阻塞的方法

  • 利用Services 注册monitor 去Check

主要是: AMSForeground Thread

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

主要是: Main ThreadUI ThreadIO ThreadDisplay ThreadWMSOther Services

SWT 判断阻塞的方法 图文描述如下:

SWT 判断阻塞的方法

2. SWT 手机重启问题处理流程

SWT 处理流程:
半分钟
检查系统是否卡住,如果卡住,dump 一次system_server 的backtrace

一分钟
如果卡住,第二次dump,并kill掉 system_server ,重新计时。

SWT 处理大致流程如下:

SWT 处理流程

3. SWT 手机重启问题的原因

导致 SWT 重启原因如下:

检查SWT 原因分类

4. SWT 手机重启问题分析流程

搜索关键 watchdog

SWT 流程分析

5.SWT 手机重启问题分析举例

确认线程关系

线程被 Block 搜索关键字held by

确认线程关系

线程被 Waiting 结合代码分析。

确认线程关系

线程死锁

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

线程死锁 线程死锁

Binder的Server 端卡住

线程状态Native,并且callstack中含有一对IPCThreadState::waitForResponse--> IPCThreadState::talkWithDriver 的明显特征。

Bind的Server端卡住 Bind的Server端卡住

SurfaceFlinger 卡住导致重启

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

SurfaceFlinger 卡住

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

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

Native 方法执行时间过长

Zygote Fork 进程时卡住

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

Zygote Fork 进程时卡住

Dump 时间过长

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

Dump 时间过长 前面有ANR 发生 前面有ANR 发生 前面有fatal JE NE KE 等Exception发生 自动化测试脚本有call dumpsys 去dump 系统信息

6. Android O 导出重启 Log 注意事项

Android O 中 mtklogdb 不在同一个目录,提交log 时需要同时导出来:

  1. adb pull /sdcard/mtklog
  2. adb pull /data/aee_exp
  3. adb pull /data/vendor/mtklog/aee_exp

至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。期待您的关注,
感谢您的阅读,谢谢!

如有侵权,请联系小编,小编对此深感抱歉,同时小编会立即停止侵权行为。

​欢迎关注微信公众号:程序员Android
公众号ID:ProgramAndroid
获取更多信息

微信公众号:ProgramAndroid

我们不是牛逼的程序员,我们只是程序开发中的垫脚石。
我们不发送红包,我们只是红包的搬运工。

点击阅读原文,获取更多福利


相关文章

  • SWT 导致手机重启问题分析

    本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 1.SWT 手机重启问...

  • SWT 重启案例分析(三)

    极力推荐文章:欢迎收藏Android 干货分享 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇...

  • SWT 重启案例分析(二)

    极力推荐文章:欢迎收藏Android 干货分享 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇...

  • SWT 重启案例分析(四)

    极力推荐文章:欢迎收藏Android 干货分享 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇...

  • SWT 重启案例分析(五)

    极力推荐文章:欢迎收藏Android 干货分享 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇...

  • SWT 重启案例分析(七)

    极力推荐文章:欢迎收藏Android 干货分享 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇...

  • SWT 重启案例分析(六)

    极力推荐文章:欢迎收藏Android 干货分享 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇...

  • SWT重启问题案例(MTK平台)

    1、db.fatal.00.SWT.dbg HWT信息Exception Log Time:[Fri Jan 1...

  • 2020-05-15

    重置应用偏好,AMS和PMS deadlock,导致手机重启 在Android Q中,今天遇到个死机重启问题。在S...

  • kubelet重启导致container重启源码分析

    kubelet重启后pleg的中记录pod status的cache未更新完整时,kubelet收到k8s事件,由...

网友评论

本文标题:SWT 导致手机重启问题分析

本文链接:https://www.haomeiwen.com/subject/zrbzlftx.html