0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SWT手机重启问题分析指南

哆啦安全 来源: 程序员Android 2023-07-24 16:45 次阅读

一、 SWT 手机重启问题简介

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

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

1.利用 Services 注册monitor 去Check

主要是:AMS、Foreground Thread

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

主要是:Main Thread、UI Thread、IO Thread、Display Thread、WMS、Other Services。

3.SWT 判断阻塞的方法

0ff15fd2-29fe-11ee-a368-dac502259ad0.jpg

SWT 判断阻塞的方法

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

SWT 处理流程:

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

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

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

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

3.SWT 处理大致流程如下

1015c2dc-29fe-11ee-a368-dac502259ad0.jpg

SWT 处理流程

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

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

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

103857c0-29fe-11ee-a368-dac502259ad0.jpg

检查SWT 原因分类

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

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

105c85a0-29fe-11ee-a368-dac502259ad0.jpg

SWT 流程分析

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

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

线程被Block搜索关键字held by

1091bec8-29fe-11ee-a368-dac502259ad0.jpg

确认线程关系

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

10bbeaea-29fe-11ee-a368-dac502259ad0.jpg

确认线程关系

3.线程死锁

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

10def724-29fe-11ee-a368-dac502259ad0.jpg

线程死锁

11153190-29fe-11ee-a368-dac502259ad0.jpg

线程死锁

4.Binder的Server 端卡住

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

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

113f649c-29fe-11ee-a368-dac502259ad0.jpg

Bind的Server端卡住

116fc5ce-29fe-11ee-a368-dac502259ad0.jpg

Bind的Server端卡住

5.SurfaceFlinger 卡住导致重启

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

1199f772-29fe-11ee-a368-dac502259ad0.jpg

SurfaceFlinger 卡住

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

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

11b87fd0-29fe-11ee-a368-dac502259ad0.jpg

Native 方法执行时间过长

7.Zygote Fork 进程时卡住

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

11d39c48-29fe-11ee-a368-dac502259ad0.jpg

Zygote Fork 进程时卡住

8.Dump 时间过长

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

11f5a43c-29fe-11ee-a368-dac502259ad0.jpg

Dump 时间过长

9.前面有ANR 发生

121e0440-29fe-11ee-a368-dac502259ad0.jpg

前面有ANR 发生

12440cbc-29fe-11ee-a368-dac502259ad0.jpg

前面有ANR 发生

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

125ef932-29fe-11ee-a368-dac502259ad0.jpg

前面有fatal JE NE KE 等Exception发生

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

12823640-29fe-11ee-a368-dac502259ad0.jpg

自动化测试脚本有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

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 手机
    +关注

    关注

    35

    文章

    6847

    浏览量

    157375
  • 看门狗
    +关注

    关注

    10

    文章

    559

    浏览量

    70728
  • 线程
    +关注

    关注

    0

    文章

    504

    浏览量

    19642
  • SWT
    SWT
    +关注

    关注

    0

    文章

    3

    浏览量

    6601

原文标题:六、 Android O以上导 Log 注意事项

文章出处:【微信号:哆啦安全,微信公众号:哆啦安全】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    SPC57 SWT静止不动

    嗨,大家好,我想用swt。我的初始代码:SWT.SR.R = 0xC520; SWT.SR.R = 0xD928;而(SWT.CR.B.SLK == 0x1);
    发表于 11-30 14:38

    多载波SWT测量PXA怎么使用

    这是关于使用PXA的多载波GSM测量。在SWT / EVM菜单中,注意到“Carrier BPF Auto,Single and Multi”选项。你能解释一下吗?注意到在启用此载波BPF的情况下
    发表于 05-30 12:54

    是什么原因导致手机不断重启

    是什么原因导致手机不断重启呢?我们来分析一下:现象手机启动,出现第一屏画面,然后黑屏,继续启动,出现第一屏画面,然后黑屏……原因手机系统为电
    发表于 09-14 09:04

    长按电源键10S强制重启手机优化

    相信大家都习惯了长按电源键10S强制重启手机,但方便的同时,也有很多小伙伴吐槽在使用手机壳,或手机放在口袋时容易误触导致重启。因此,不少粉丝
    发表于 12-27 06:07

    S32K3x4EVB-Q257 SWT会无限期地重置怎么解决?

    你好。我有一个 SWT 配置如下图所示。当我维修 SWT 时,它按预期工作。温我故意不刷新SWT来证明它可以重置软件执行,它确实重置了,但连续只有8次。8 次后,它不再复位,微控制器似乎没有运行任何
    发表于 03-21 08:49

    MPC5777C swt_1在swt_0工作时不工作怎么解决?

    我使用 MPC5777C。我正在使用我为 swt_0 所做的配置来配置 swt_1。但是 swt_1 在 swt_0 工作时不工作。我也希望 swt
    发表于 04-20 06:27

    MPC5777C可以更改swt1的时钟速度吗?

    我正在使用 MPC5777C。 我可以更改 swt1 的时钟速度吗?SWT 正在使用 16MHz IRC。我可以将它更改为 8Mhz 或其他吗?
    发表于 05-05 10:22

    S32R294的SWT jd_watchpt怎么使用?

    我考虑过带有 jd_Watchpt(IAC8 寄存器)的 S32R294 SWT 可以为安全机制实施“程序序列的逻辑监控”。 根据S32R294参考手册Chapter 48.1.4,SWT地址执行
    发表于 05-17 08:52

    SWT133 环路中继接口电路

    SWT133 环路中继接口电路采用传统变压器藕合方案,具有防雷击效果好、极小的信号失真、极高的共模抑制比以及理想的对地平衡度;同时,采用新型音频变压器材料,在不降低传输
    发表于 05-06 09:43 39次下载

    基于SWT的多线程解决方案

    介绍了在基于 SWT 的C / S 结构的项目开发中,当用UI 主线程进行后台数据读取或交换时导致的UI 线程堵塞现象的解决方案。通过对UI 线程的深入了解,利用多线程技术,将前台显示和后
    发表于 06-07 17:08 0次下载

    苹果手机经常死机或自动重启应该如何解决

    iphone手机自动重启怎么办? 相信很多苹果用户可能有时会遇到过手机自动关机重启的问题,明明手机是开机的,但是突然就自动关机
    的头像 发表于 11-23 10:47 5.5w次阅读

    华为或将重启4G手机生产?

    华为有意重启4G手机生产,因4G手机,依然大有可为。以退为进,不管是国内,还是国外,其实4G手机的消费需求也不小。
    发表于 11-24 11:33 2875次阅读

    教你们如何解决MTK平台手机重启问题

    目前采用MTK平台开发的GSM单卡单待机器和双卡双待机器的设计过程中经常出现手机重启(重新搜索网络)的现象。本文针
    的头像 发表于 04-05 08:46 2729次阅读
    教你们如何解决MTK平台<b class='flag-5'>手机</b><b class='flag-5'>重启</b>问题

    使用Pmod HB3和Pmod SWT控制电机

    电子发烧友网站提供《使用Pmod HB3和Pmod SWT控制电机.zip》资料免费下载
    发表于 01-05 09:35 0次下载
    使用Pmod HB3和Pmod <b class='flag-5'>SWT</b>控制电机

    手机卡顿,重启和关机再开,差别竟有这么大!

    说起使用手机时最令人难受的事儿想必手机卡顿一定名列前茅当出现这种情况,很多小伙伴都会选择将手机重启或者关机再开机那么你知道二者之间有哪些区别吗?今天,小翼说给你听~
    的头像 发表于 07-22 16:00 1407次阅读
    <b class='flag-5'>手机</b>卡顿,<b class='flag-5'>重启</b>和关机再开,差别竟有这么大!