Linux内核BUG()调用不会挂起内核



我运行的是旧版本的linux代码(2.6.27)。我已经定义了CONFIG_BUG=y和HAVE_ARCH_BUG。所以我在asm-x86/BUG .h中使用BUG()定义,而不是asm-generic。我看到,当我插入一个测试模块(它只有一个BUG()调用)时,它不会使盒子崩溃。我可以进入控制台。这是一个SMP系统,所以我希望如此。我的问题是,按照设计,BUG()应该像panic一样挂起盒子吗?如果是这样,为什么它不在这个内核上?

谢谢Murali

BUG()本身不应该挂起盒子,所以您的系统行为是OK的。

在x86上,BUG()最终尝试执行ud2机器指令,导致"无效操作码"异常。这取决于内核如何处理,是输出消息并继续工作还是停止。不同的内核在这里可能会有不同的反应。

最新更新