展讯平台 kernel重启分析套路总结

时间:2024-03-30 08:09:16

一.初步定为分析

在ylog的phone.info中搜索关键词 bootmode

例如:

[ro.bootmode]: [panic]

可以确定是kenel panic导致的手机重启

 二.Kernel Panic的产生的原因

panic 是英文中是惊慌的意思,Linux Kernel panic正如其名,linux kernel不知道如何走了,它会尽可能把它此时能获取的全部信息都打印出来。

有两种主要类型kernel panic,后面会对这两类panic做详细说明:

1.hard panic(也就是Aieee信息输出)
2.soft panic (也就是Oops信息输出)

2. 常见Linux Kernel Panic报错内容:

(1) Kernel panic-not syncing fatal exception in interrupt
(2) kernel panic – not syncing: Attempted to kill the idle task!
(3) kernel panic – not syncing: killing interrupt handler!
(4) Kernel Panic – not syncing:Attempted to kill init !

三.发送Kernel Panic该怎么办

1.首先需要自己拉代码编译user版本的项目,并默认开启sysdump(sysdump在userdebug版本中默认开启的)

修改以下代码
device\sprd\xxxx\common\rootdir\root\init.common.rc
在 on post-fs-data 下添加:

  1. // 设置 Ylog 默认开启开关 1 开启,0或不写 关闭

  2. setprop persist.ylog.enabled 1

  3. start ylog

  4. // 设置sysdump 默认开关属性值 开启为true 关闭 false

  5. setprop debug.sysdump.enabled true

  6. setprop persist.sys.eng.reset 0

2.插入SD卡 抓取Sysdump log,一定插入大于8G的T卡,并事先清空,保证足够大的内存

展讯平台 kernel重启分析套路总结

3.sysdump log 分析

1)将ylog-ap-SYSDUMP下的sysdump.core.*复制到对应项目的vendor\sprd\tools\crash下

展讯平台 kernel重启分析套路总结

2)将out/target/product/xxxx/obj/KERNEL/下的vmlinux也copy到vendor\sprd\tools\crash下

展讯平台 kernel重启分析套路总结

3)cd到vendor\sprd\tools\crash,查看是否copy成功

展讯平台 kernel重启分析套路总结

4)cat sysdump.core.* >log(log是文件名,可以随意起),将所有的sysdump.core文件集成到一个文件中

展讯平台 kernel重启分析套路总结

5)ls 查看是否集成文件生成

展讯平台 kernel重启分析套路总结

6)执行命令  ./crash_arm vmlinux log(这里的log指第四步中创建的集成文件),使用 crash_arm 脚本 和 vmlinux 解析 sysdump log

展讯平台 kernel重启分析套路总结

7)log >aaa.txt,此处的log是执行命令,将log输入到aaa.txt文件中

展讯平台 kernel重启分析套路总结

8)分析生成的aaa.txt

展讯平台 kernel重启分析套路总结

可以看出是Fatal exception, sprd_sysdump_info->crash_key: 0导致的reboot