(1)现象:
[6c6f6f70] *pgd=00000000
Pid: 2838, comm: WebViewCoreThre
CPU: 0 Tainted: P (3.0.13 #1)
PC is at 0x9f5c4302
LR is at 0x9f5c42f3
pc : [<9f5c4302>] lr : [<9f5c42f3>] psr: 00000030
sp : 49682518 ip : 00000000 fp : 9f6626c3
r10: 012e87b8 r9 : 00000000 r8 : 00000001
r7 : 014e5ca8 r6 : 00000000 r5 : 9f6b03d4 r4 : 01657e08
r3 : 0000011a r2 : 00000116 r1 : 015f9010 r0 : 6c6f6f70
Flags: nzcv IRQs on FIQs on Mode USER_32 ISA Thumb Segment user
Control: 10c53c7d Table: 0dba404a DAC: 00000015
(2)dump 出 maps 信息,找出PC指针对应的segment。
#cat /proc/2869/maps (2869 为browser 的进程pid)
...............................................
...............................................
9f500000-9f6a4000 r-xp 00000000 00:12 666 /system/lib/libchromium_net.so
...............................................
................................................
(3)算出出错的偏移量:
0x9f5c4302-9f500000 =0xc4302
(4)用addr2line工具查了一把,定位code的位置
又因为*pgd=00000000,所以怀疑第一个参数是NULL,所以是否要在这里加上NULL的判断呢,因为skyworth有对browser有客制化,
对browser退出时的一些场景不再做save了。
QA:
(1)segment default各个名称含义
(2)addr2line 参数的含义
(3)用那个addr2line 工具