系统自动重启异常-总结网上看到的博文
来源:互联网 发布:lovecloud是什么软件 编辑:程序博客网 时间:2024/05/21 13:31
watchdog timeout 有两种,一种是cpu的watchdog timeout,称为HWT(hardware timeout),SWT(software timeout)。
监测cpu的watchdog主要是监测cpu是否卡死,cpu喂狗间隔是20s,而超时时间是30s,也就是说最长能容忍卡住的时间是10s(卡一小会还是可以的),超过这个时间,系统就会复位了。这里还有问题,由于喂狗进程之间没有同步,是否有可能存在刚开始一起喂狗,之后渐渐出现先后呢?误差肯定有的,但在任何30s时间里,喂狗进程都会喂1次狗的(因为喂狗间隔20s,每个CPU肯至少会喂1次狗)。而只要CPU卡死超过10s就复位了。
异常分析之SWT
SWT是指Android Watchdog Timeout,应用层看门狗超时,通常我们说的WDT(Watchdog Timeout)是HWT,硬件看门狗超时。应用层Watchdog主要实现是在frameworks/base/services/java/com/android/server/Watchdog.java里,其实现原理看看这个类就知道,主要逻辑是:
1. Watchdog是单例模式,监控系统几个比较重要的Service,如:MountService、ActivityManagerService、InputManagerService等,这些Service在启动时通过调用Watchdog.getInstance().addMonitor(this); 加入到Watchdog的监控列表中
可以使用QAAT去分析log,实践证明并不能把所有有用的信息抓出来,还是得自己去细看。分析时需要把所有log都放到QAAt.bat的目录下。
WDT :watchdog timer
重启和死机问题比较关键的信息是重启开机时抓取的log,而不是重启前的log。
Warning: No aee db file or trace file!!!
Please pull aee db file: /data/aee_exp or /sdcard/mtklog/aee_exp
Please pull trace info: /data/anr
[温馨提醒 - 关于死机与重启的问题处理]
1. 请自开机起全程录制Mobile log与UART4 log信息,片段或事后的log无益于问题的排查
2. 请参考客户文档步骤完整提交sdcard/mtklog, data/aee_exp, data/anr文件夹
hang detect:这个检测watchdog运行异常的程序:一个用来监控system server 的watchdog 行为是否异常
即在hang detect 中有两个关键的变数, hd_detect_enabled 指示当前hang detect 是否开启, hang_detect_counter 为计时器计数. hang_detect thread 每隔30s (HD_INTER) 将其减一。
其设计思想非常简单,即上层通过ioctl 此device, 设置hang_detect_counter, 即告知hang detect, 本人预计会在hang_detect_counter * 30s 之内再次来tick 您, 假如我没有在这个时间内tick 您,那么就意味着我已经牺牲了, 您就发动暴动, 重启手机.
对应hang_detect_thread 的实现就这个循环检测和操作hang_detect_counter .
即System server watchdog 在轮转的过程中,会周期性的tick hang detect, 目前设计的timing 比较保守,我们会在M 版本将这个时间进一步降低优化. tick 分成三种:
- 正常情况下,tick 300s, 对应count=10.
- 在dump backtrace 时,tick 600s, 对应count=20.
- 在SWT 发生的情况下,tick 720s, 对应count=24.
这个可以从kernel log 中明确的看到.如:
watchdog 看起来正常:
[ 198.215932] (1)[1322:watchdog]AEEIOCTL_RT_MON_Kick ( 300)
[ 198.215945] (1)[1322:watchdog][Hang_Detect] hang_detect enabled 10
watchdog 在dump backtrace:
[ 258.218145] (0)[1322:watchdog]AEEIOCTL_RT_MON_Kick ( 600)
[ 258.218171] (0)[1322:watchdog][Hang_Detect] hang_detect enabled 20
watchdog 在做SWT:
[ 299.046542] (0)[1322:watchdog]AEEIOCTL_RT_MON_Kick ( 720)
[ 299.046572] (0)[1322:watchdog][Hang_Detect] hang_detect enabled 24
当然你也可以从hang detect thread 的log 中看到这个:
[ 210.475572] (0)[90:hang_detect][Hang_Detect] init found pid:1.
[ 210.475735] (0)[90:hang_detect][Hang_Detect] mmcqd/0 found pid:158.
[ 210.475815] (0)[90:hang_detect][Hang_Detect] surfaceflinger found pid:265.
[ 210.475887] (0)[90:hang_detect][Hang_Detect] system_server found pid:734.
[ 210.475919] (0)[90:hang_detect][Hang_Detect] ndroid.systemui found pid:1071.
[ 210.476003] (0)[90:hang_detect][Hang_Detect] debuggerd found pid:4313.
[ 210.476027] (0)[90:hang_detect][Hang_Detect] debuggerd64 found pid:4314.
[ 210.476056] (0)[90:hang_detect][Hang_Detect] hang_detect thread counts down 10:10.
Hang Detect 问题分析案例
Hang Detect 问题
以下是该博文http://blog.csdn.net/sssheiye/article/details/50205041的主要信息:
1. Kernel Panic
[ 2180.467426]-(0)[77:hang_detect]LR is at aee_wdt_irq_info+0x154/0x170
- 系统自动重启异常-总结网上看到的博文
- 网上看到的一句话
- 网上看到的
- App异常自动重启
- BaseActivity+Application的使用,捕捉异常自动重启应用
- 网上看到的一段话
- 网上看到的几道小问题
- 网上看到的伟大梦想!!!
- 网上看到的分页语句
- 网上看到的,挺经典
- 网上看到的IQ题
- 网上看到的相关知识
- 网上看到的进度条代码
- 网上看到的,值得看一看
- 网上看到的一篇文章
- 网上看到的收藏了
- 单片机高手之路(网上看到的一篇很好的的学习博文)
- 网上看到两道题(我的解法见下一篇博文)
- 棋盘问题系列
- mysql添加多个字段
- 设计模式概述及详解-持续更新
- 【SMS】SMS协议介绍之SMS-IWMSC
- 如何解决电商网站超卖现象
- 系统自动重启异常-总结网上看到的博文
- poj日记(1860)
- LINUX(socket)网络编程部分头文件归纳解释
- ehcache jgroups同步,节点重启初始化缓存bug.
- Python 列表 元组 字典
- 【SMS】SMS协议介绍之MSC
- sdssd
- ImportError: No module named pycocotools.coco
- 瓦片地图在iOS项目中的应用