我知道它可以是任何东西,但通常以下内核消息可能表明:
< 2>内核BUG在page_alloc.c:116!
此架构未实现dump_stack()
内核恐慌:内核错误
在中断处理程序中 - 不同步
< 0> 5秒后重新启动..
这发生在2.4.20基于uclinux的系统(ARM9 MMU-less cpu)上。在中断处理过程中似乎发生了一件坏事:RAM出现故障,因此内核无法分配内存或其他任何内容?
感谢任何提示。
答案 0 :(得分:2)
您应该检查内核源代码中page_alloc.c
的第116行,以查看触发此特定BUG消息的条件。
虽然你在无MMU系统上运行的事实让我怀疑一个有缺陷的用户进程已经踩到了内核的部分内存。
答案 1 :(得分:0)
这显然看起来像堆或堆栈损坏,只是尝试将print放在文件page_alloc.c中,尝试打印在恐慌行之前访问的变量的地址:116,这将给你一些提示,如果堆或堆栈腐败已经发生。
如果你发现它的堆栈损坏,那么试着查看在损坏的变量之前声明哪个变量,因为这可能是罪魁祸首变量,这可能有助于你调试。
如果它的堆损坏然后是难以调试的东西,那么你需要找出一些变量是否分配更少的内存但写入的数据多于分配的字节。