这些内核恐慌错误是什么意思? [英] what do these kernel panic errors mean?

查看:33
本文介绍了这些内核恐慌错误是什么意思?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

insmod ARM 平台上的一个内核模块,我得到一个内核恐慌,导致这三个错误被打印到屏幕

I insmod a kernel module on ARM platform and I get a kernel panic which causes this three errors to be printed to screen

  1. 未处理的错误:非行获取(0x008)上的外部中止
  2. 未处理的错误:不精确的外部中止 (0xc06)
  3. 内核恐慌 - 不同步:中断中的致命异常

  • 括号中的值是什么?
  • 3 是什么意思 听起来像是原子性的调度,但实际上内核模块中没有这样的东西.?
  • What are those values in parenthesis ?
  • What does 3 mean It sounds like scheduling while atomic but there is no such thing in a kernel module.?

推荐答案

括号中的值为 ifsr (指令故障状态) 寄存器.流产的原因有很多,这些给出了一个特定的原因.内核中有一些表可以处理特定的故障原因,而另一些表则具有执行 printk 并中止任务或可以 panic() 内核的处理程序.参见:arm/mm/错误.c.除非您正在开发故障处理程序,否则该值可能没有价值.虽然它可以让我们知道故障是怎么回事,但最好还是拿到 PC 并查看该地址处的代码(我认为它已经打印出来了?).

The values in parenthesis are the ifsr (instruction fault status) register. There are many causes for aborts and these give a specific cause. There are some tables in the kernel that handle particular fault causes and other have a handler which does a printk and aborts a task or can panic() the kernel. See: arm/mm/fault.c. The value is probably not valuable unless you are developing a fault handler. Although it can give an idea of what the fault is about, it is better just to get the PC and look at the code at that address (which I think was already printed?).

这些故障可能发生在任何地方;在用户任务、内核任务或 interrupt 处理程序等中.由于您的 interrupt 处理程序崩溃了,Linux 决定停止一切而不打扰继续.否则,您可能会损坏磁盘(甚至更多)等.

These faults can occur anywhere; in a user task, a kernel task or an interrupt handler, etc. Since your interrupt handler has crashed, Linux decides to stop everything and not bother proceeding. Otherwise, you could corrupts disks (even more), etc.

注意:每个故障状态寄存器 有一个 abort.S 文件,它对于特定的 ARM CPU 是不同的.例如见 abort-ev7.S v7_early_abort.这是放在 处理器表在启动时匹配.

Note: Each fault status register has an abort.S file which is different for the particular ARM CPU. For example see abort-ev7.S v7_early_abort. This is put in a processor table which is matched at boot time.

  1. 未处理的故障 - 尝试读取未映射的内存(通过 MMU).
  2. 内核崩溃 - 在被视为不可恢复的代码中发生了未处理的错误.
  1. Unhandled fault - trying to read memory that is not mapped (via MMU).
  2. Kernel panic - an unhandled fault occurred in code deemed un-recoverable.

这篇关于这些内核恐慌错误是什么意思?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆