我正在运行旧版本的linux代码(2.6.27)。我有CONFIG_BUG = y并且还定义了HAVE_ARCH_BUG。所以我在asm-x86 / bug.h中使用BUG()而不是asm-generic。 我看到当我修改一个测试模块(它只有一个BUG()调用)时,它不会使盒子崩溃。我能够进入控制台。这是一个SMP系统,所以我希望如此。 我的问题是,按照设计,BUG()应该像恐慌一样悬挂盒子吗?如果是这样,为什么它不在这个内核上?
THX 穆拉利
答案 0 :(得分:1)
BUG()
本身不应该挂起盒子,所以你的系统行为没问题。
在x86上,BUG()
最终尝试执行ud2
机器指令,这会导致“无效操作码”异常。内核如何处理,无论是输出消息还是继续工作或停止。不同的内核可能会以不同的方式做出反应。