Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux kernel 调试内核死机错误_Linux Kernel - Fatal编程技术网

Linux kernel 调试内核死机错误

Linux kernel 调试内核死机错误,linux-kernel,Linux Kernel,我有一个arm板,在上面运行内核为4.1.15的yocto。当我运行python程序时,我经常但随机地遇到以下内核错误 Unable to handle kernel paging request at virtual address 7f101f7c pgd = 80004000 [7f101f7c] *pgd=8c6c4811, *pte=00000000, *ppte=00000000 Internal error: Oops: 80000007 [#1] PREEMPT SMP A

我有一个arm板,在上面运行内核为4.1.15的yocto。当我运行python程序时,我经常但随机地遇到以下内核错误

Unable to handle kernel paging request at virtual address 7f101f7c 
pgd = 80004000 
[7f101f7c] *pgd=8c6c4811, *pte=00000000, *ppte=00000000 
Internal error: Oops: 80000007 [#1] PREEMPT SMP ARM 
Modules linked in: wilc3000(O) at_pwr_dev(O) pn5xx_i2c [last unloaded: at_pwr_dev] 
CPU: 0 PID: 1336 Comm: DebugThread Tainted: G O 4.1.15-1.2.0+g77f6154 
Hardware name: Freescale i.MX6 Ultralite (Device Tree) 
task: 8c73b900 ti: 8c8d6000 task.ti: 8c8d6000 
PC is at 0x7f101f7c 
LR is at _raw_spin_unlock_irqrestore+0x28/0x54 
pc : [<7f101f7c>] lr : [<807e1238>] psr: 600f0013 
sp : 8c8d7f30 ip : 00000000 fp : 00000000 
r10: 7f107d30 r9 : 7f107d20 r8 : 7f107f48 
r7 : 00000000 r6 : 8c57b000 r5 : 7f107f48 r4 : 8c54aa00 
r3 : 00000000 r2 : 00000000 r1 : 20000013 r0 : ffffffc2 
Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel 
Control: 10c53c7d Table: 8c52c06a DAC: 00000015 
Process DebugThread (pid: 1336, stack limit = 0x8c8d6210) 
Stack: (0x8c8d7f30 to 0x8c8d8000) 7f20: 8c8063a0 00000000 8c8d6000 00000000 
7f40: 00000000 00000000 00000000 8c975c40 8c54aa00 7f101f28 00000000 00000000 
7f60: 00000000 8004d070 00000000 00000000 7ee95a5c 8c54aa00 00000000 00000000 
7f80: 8c8d7f80 8c8d7f80 00000000 00000000 8c8d7f90 8c8d7f90 8c8d7fac 8c975c40 
7fa0: 8004cf94 00000000 00000000 8000f528 00000000 00000000 00000000 00000000 
7fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
7fe0: 00000000 00000000 00000000 00000000 00000013 00000000 7a9ce301 72611f00 
[<807e1238>] (_raw_spin_unlock_irqrestore) from [<00000000>] ( (null)) 
Code: bad PC value
无法处理虚拟地址7f101f7c处的内核分页请求
pgd=80004000
[7f101f7c]*pgd=8c6c4811,*pte=00000000,*ppte=00000000
内部错误:Oops:8000007[#1]抢占SMP ARM
链接模块:wilc3000(O)at_pwr_dev(O)pn5xx_i2c[上次卸载:at_pwr_dev]
CPU:0 PID:1336通信:调试线程受污染:GO 4.1.15-1.2.0+g77f6154
硬件名称:飞思卡尔i.MX6 Ultralite(设备树)
任务:8c73b900 ti:8c8d6000任务。ti:8c8d6000
电脑位于0x7f101f7c
LR处于原始旋转解锁irqrestore+0x28/0x54
pc:[]lr:[]psr:600f0013
sp:8c8d7f30 ip:00000000 fp:00000000
r10:7f107d30 r9:7f107d20 r8:7f107f48
r7:00000000 r6:8c57b000 r5:7f107f48 r4:8c54aa00
r3:00000000 r2:00000000 r1:2000013 r0:FFFFFF C2
标志:模式SVC_32 ISA ARM段内核上FIQ上的nZCv IRQ
控件:10c53c7d表:8c52c06a DAC:00000015
进程调试线程(pid:1336,堆栈限制=0x8c8d6210)
堆栈:(0x8c8d7f30到0x8c8d8000)7f20:8C8063A000000000 8c8d6000 00000000
7f40:00000000 00000000 00000000 8c975c40 8c54aa00 7f101f28 00000000 00000000
7f60:00000000 8004d070 00000000 00000000 7ee95a5c 8c54aa00 00000000 00000000
7f80:8c8d7f80 8c8d7f80 00000000000000 8c8d7f90 8c8d7f90 8c8d7fac 8c975c40
7fa0:8004cf94 00000000 00000000 8000f528 00000000 00000000 00000000 00000000
7fc0:00000000000000000000000000000000000000000000000000000000000000000000000000
7fe0:00000000000000000000000000000013 00000000 7a9ce301 72611f00
[]来自[]的[((空))
代码:错误的PC值
考虑到我在此板上没有访问JTAG的权限,我如何调试此错误。
code:bad PC value
的含义是什么?如果从该日志中发现任何与问题相关的信息

pc : [<7f101f7c>] lr : [<807e1238>] psr: 600f0013 

您必须使用
addr2line
命令。

您可以尝试kdump,但这可能需要时间。地址7f101f7c上放置了什么?对内核做了哪些更改(配置、源代码更改)?您是否在用户和内核之间使用非标准的2:2 va分割?你经常点击一个地址还是它会改变?堆栈跟踪相同?否地址更改7f3d1f7c、7f101f7c、7f0d4f7c、7f296f7c、7f158f7c、7f647f7c。这个内核错误发生在我加载一些驱动程序时。错误是随机出现的。我使用的是NXP提供的标准内核。堆栈跟踪相同,只是地址不同。该跟踪看起来像是您的寄存器集已损坏。我认为除了设法将这个问题本地化之外,没有其他办法。你说过这是在司机上路后发生的。你可以更进一步,试着找到确切的点。这将有助于提供更多的解释,说明这对OP和后续用户都有什么作用。为什么这能解决问题?
addr2line
命令的作用是什么?记住,阅读本文的人不知道如何自己解决这个问题,所以这是一个很好的机会来教他们。你介意用额外的解释和指导更新你的答案吗?