使用addr2line分析MTK6765机器重启(一)

一.问题

产线反馈有2台机器,放置或者操作tp过程多次出现自动重启。平均5到10分钟重启一次;

二.原因

2.1 根本原因:

CPU SOC异常损坏,导致CPU访问非法指令、访问非法内存地址,触发系统Reboot.

三.解决方案

3.1 更换Emmc + DDR + CPU

四.分析过程

4.1 Log:

//是一个内核级的错误,通常称为“Oops”, #1表示错误代码

[11008:sh]Internal error: Oops: 96000004 [#1] PREEMPT SMP

[11008:sh]CPU: 1 PID: 11008 Comm: sh Tainted: P        W  O    4.9.190 #1

CPU:CPU1执行oops错误

PID: 进程/线程的PID:11008

Comm:进程或线程的名

Tainted:标志位掩码

[11008:sh]PC is at anon_vma_interval_tree_insert+0x40/0x90

[11008:sh]LR is at anon_vma_clone+0x10c/0x198

PC:当前CPU运行位置,

LR:函数返回地址,以定位函数被调关系

0x40/0x90:表示函数开始偏移量 (字节)、0x90:函数的大小

//Trace开始:调用栈,从下往上读,调用关系

 [11008:sh]Call trace:

 [11008:sh][<ffffff8f7648b1b8>] dump_backtrace+0x0/0x290

 [11008:sh][<ffffff8f7648b1b0>] show_stack+0x14/0x1c

 [11008:sh][<ffffff8f767e071c>] dump_stack+0xcc/0x104

 [11008:sh][<ffffff8f76bac130>] mrdump_common_die+0xe8/0x170

 [11008:sh][<ffffff8f76bad3a4>] ipanic_die+0x20/0x74

 [11008:sh][<ffffff8f764d1014>] notify_die+0x64/0xb4

 [11008:sh][<ffffff8f7648b560>] die+0x118/0x2c8

 [11008:sh][<ffffff8f7649e010>] __do_kernel_fault+0x90/0xa0

 [11008:sh]mrdump: add MD:0xffffffe8ba400000 sz:0x0 failed

//触发系统重启

 [11008:sh]exception reboot

//CPU访问了一个非法地址:

[3090ffe89de08a38] address between user and kernel address ranges

4.2 addr2line反编译

PC逻辑地址=PC基地址 +偏移量 

pc:当前CPU运行位置,lr:函数返回地址,以定位函数被调关系

PC is at anon_vma_interval_tree_insert+0x40/0x90

4.2.1 根据关键字找出偏移量:0x40

anon_vma_interval_tree_insert+0x40

4.2.2 根据pc 运行函数计算PC基地址: 

nm vmlinux |grep "anon_vma_interval_tree_insert"

返回:ffffff80082016e4 T anon_vma_interval_tree_insert

4.2.3 PC逻辑地址=PC基地址 +偏移量 

=0xffffff80082016e4 + 0x40 = 0xFFFFFF8008201724

4.2.4 使用addr2line命令反编译代码

命令:addr2line –e vmlinux 逻辑地址

addr2line -e vmlinux 0xFFFFFF8008201724

4.3 定位到源码:

/home/android005/work/2_E7171/mt6765/kernel-4.9/mm/interval_tree.c :16

五.方案验证

5.1 更换Emmc:Memory + DDR: 测试2天复现;

5.2 更换CPU+Emmc:测试7天未复现;

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值