一尘不染

这些内核恐慌错误是什么意思?

linux

insmod是ARM平台上的内核模块,并且遇到内核崩溃,导致这三个错误被打印到屏幕上

  1. Unhandled fault: external abort on non-linefetch (0x008)
  2. Unhandled fault: imprecise external abort (0xc06)
  3. Kernel panic - not syncing: Fatal exception in interrupt

    • 括号中的值是什么?
    • 是什么3意思这听起来像是原子调度,但是内核模块中没有。

阅读 959

收藏
2020-06-02

共1个答案

一尘不染

括号中的值是ifsr指令故障状态)寄存器。中止的原因有很多,这些原因有特定的原因。内核中有一些表可以处理特定的故障原因,而另一些表则具有处理程序,该处理程序执行a
printk并中止任务或panic()执行内核。参见:arm / mm /
fault.c
。除非您正在开发故障处理程序,否则该值可能没有价值。尽管它可以使您了解故障的根源,但最好还是PC在该地址查看代码(我认为它已经打印出来了?)。

这些故障可能发生在任何地方。在用户任务,内核任务或interrupt处理程序等中。由于interrupt处理程序崩溃,Linux决定停止所有操作,而无需进行任何操作。否则,您可能会损坏磁盘(甚至更多),等等。

注意:每个
故障状态寄存器

都有一个 abort.S 文件,该文件对于特定的ARM CPU是不同的。例如,请参见abort-
ev7.S

v7_early_abort。将其放入在启动时匹配的处理器表中。

  1. 未处理的故障 -尝试读取未映射的内存(通过MMU)。
  2. 内核崩溃 - 认为无法恢复的代码发生 未处理的错误
2020-06-02