Linux内核调试:Oops错误与锁调试解析
1. 解析内核Oops错误诊断
1.1 Oops位掩码解析
在非x86系统上解析Oops位掩码时,需要查找对应处理器的技术参考手册(TRM)。例如,当出现如下Oops位掩码时:
Internal error: Oops: 805 [#2] PREEMPT SMP ARM
这表明我们需要查找TI Sitara AM335x SoC(基于Cortex - A8核心)的TRM。其中,内存保护故障状态寄存器(MPFSR)保存着错误代码,它以Oops位掩码的形式显示。相关的TRM文档可从 这里 获取,MPFSR寄存器内部编码的详细信息在文档的11.4.1.87节(当前该文档的第1735页)。
1.2 实际的Oops错误案例
以下是一些实际的Oops错误案例链接:
- 内核空指针解引用(在4.14 - rc2版本): https://groups.google.com/g/linux.kernel/c/rG2uYWdoteo/m/6RacvsJ6BwAJ?hl=en
- 4.9.33版本的Oops错误(阅读邮件