Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1306181
  • 博文数量: 478
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4833
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-28 11:12
文章分类

全部博文(478)

文章存档

2019年(1)

2018年(27)

2017年(21)

2016年(171)

2015年(258)

我的朋友

分类: Android平台

2015-10-21 20:27:24

1. 死机还是重启

应当说针对不同的场景, 死机和重启意义不一样.

对于普通用户来说, 死机的危害性和重要性远大于重启。死机意味着机器在很长一段时间内机器都运行不正常,不能使用。危害性仅次于不能开机。重启很多时候用户都无法感知到,除非当时正在操作手机,并且通常很快就可以恢复。 所以在USER 版本中,我们要尽可能的把死机转换成重启。

对于开发者来说,重要的是解决问题,通常把死机转换成重启,为了规避一些未知因素,通常抓取的资讯比较少,难以直接分析问题。而如果有死机的现场,分析起来就相对容易得多。

所以针对ENG 版本,我们建议不要把死机转换成重启。针对USER 版本,尽可能的把死机转换成重启。
 
2. 死机如何转换成重启
死机转换成重启的通用手段就是Watchdog 机制, 通过watchdog 监测系统执行情况, 一旦发生watchdog timeout, 则做相应的异常处理。 通常对于严重的情况,就是重启系统。
 
在android 中有两个最为重要的Watchdog 机制, 一个是System Server 内部的Watchdog, 用于监测System Server 重要Thread 是否正常, 关键Lock 是否可以快速获取。一旦出现故障,则快速重启android 上层。 另外一个就是整个系统的Watchdog, 这个依赖于不同平台厂商的实现, 对于MTK 平台来说, 大体的做法是每一个cpu core 对应一个Watchdog Thread [wdtk-X], 周期性(20s)的去写RGU register, 而RGU register 的timeout 时间是30s, 即如果出现一个core 的watchdog thread 没有按时踢狗, 那么就会触发一个timeout 的FIQ, 产生一个KE 引发系统完整重启。
 
MTK 在KK 以后的平台, 有做了hang monitor 机制, system server 的watchdog thread 周期性的踢kernel 中的一个计时器, 并设定下一次踢狗的时间, 如果在设定的时间内没有踢狗, 即意味着system server 的watchdog 本身可能卡住, 那么hang monitor 机制就会自己触发一个HWT, 引发系统完整重启。
当然并非所有的死机问题都能转换成重启, 下面我就对一些常见的cases 说明。
 
3. 死机VS重启
HW Hang                           [maybe]
IRQ Disable & run long time       [After ICS Reboot, GB Hang]
SoftIRQ run long time             [Reboot]
Preempt Disable long time         [Reboot]
RT Thread busy[RT < 99]           [Hang or Hang long time then reboot]
Kernel Module Hang                [maybe]
---- Not block watchdog thread reboot.
Native Module Hang                [maybe]
---- Not block watchdog thread reboot.
SurfaceFlinger Hang               [GB reboot, ICS/JB Hang, KK Hang long time then reboot] 
Display subsystem Hang            [Hang]
LCM Hang                          [Hang]
Input Driver Fail                 [Hang]
Input System Hang                 [GB, ICS Hang and JB, KK Reboot]
WindowManagerPolicy Hang          [Maybe]
---- Need check the serverthread state
System server deadlock            [Reboot]
System server logic abnormal      [Maybe]
Surfaceflinger logic abnormal     [Maybe]
阅读(801) | 评论(0) | 转发(0) |
0

上一篇:无现场猜测与分析

下一篇:经典案例

给主人留下些什么吧!~~