当手机发生系统重启,即导致 kernel 重启的异常时,会在手机中的/data/aee_exp 目录下保存异常重启的 db。工
程师可以通过 GAT 的 bug report 功能,或者直接通过 adb pull,把对应的 db 从手机中抓回来。进一步,对于异
常重启的类型,需要通过 GAT 工具解开 db 档案(解开方式参考 MTK-online 上的文档
GAT_User_Guide(Customer).docx 之 5.1 的部分),对里面的 SYS_KERNEL_LOG/SYS_LAST_LOG/
SYS_REBOOT_REASON 内容进行解析,才能知道具体的重启的类型。
一般来说,导致 kernel 重启的异常重启,包括 Kernel Panic, Watchdog Timeout, Hardware Reboot 这三种类型。
一个完整的 Kernel Panic,其 db 解开来会包含如下的 档案:
[SOLUTION]
1. Kernel Panic
即 linux kernel 发生了无法修复的错误,从而导致 panic。通过查看 SYS_KERNEL_LOG 的内容,kernel Panic
进一步可以分为如下几类:
a. 普通的 data abort。从 SYS_KERNEL_LOG 中,可以检索到如下的 info:
Unable to handle kernel NULL pointer dereference at virtual addressXXXXXXXX
如上的 XXXXXXXX 代表某个非法地址。这种类型是最多的。
b. oom 主动触发的 panic。从 SYS_KERNEL_LOG 中,可以检索到如下的 info:
Kernel panic - not syncing: Out of memory and no killable processes...
此种类型的 panic 一般是某个 process 或者 APK 耗尽了 memory 资源,从而 kernel 主动触发的 panic 重启。对于
这种类型的重启,强烈建议工程师把如上的 info 填写到 eService 的标题中,这样 MTK 可以对 eService 进行一
次到位的分配。
c. undefined instruction,未定义指令异常。从 SYS_KERNEL_LOG 中,可以检索到如下的 info:
Internal error: Oops - undefined instruction
此类异常较为少见,可能是 CPU/DRAM 不稳定或者受干扰导致的问题。
d. bad mode 异常,即 PC 处于一个无效的 virtual address。从 SYS_KERNEL_LOG 中,可以检索到如下的 info:
评论0