我在Linux内核2.4(作业)中更改了Sched.c,现在该系统进入了内核恐慌。奇怪的是:它似乎通过了许多启动检查和初始化,并且仅在最后才恐慌,显示了HTE遵循堆栈跟踪:

update_process_times
do_timer
timer_interrupt
handle_IRQ_event
do_IRQ
call_do_IRQ
do)wp_page
handle_mm_fault
do_page_fault
do_sigaction
sys_rt_sigaction
do_page_fault
error_code

错误是:“在中断处理程序中 - 不同步”

我知道没有任何代码很难说出,但是有人能做出有教育的猜测将我指向正确的方向吗?

有帮助吗?

解决方案

在调试内核问题时,我可以给您自己的个人口头禅:“这始终是您的错。”

我经常看到由于在工作外的覆盖内存而引起的问题 - 例如,如果我为硬件提供了不正确的DMA地址。您可能会以某种方式拧紧锁;在这种情况下,如果您看到超时:一个被遗忘的锁定锁会导致暂停,这似乎是可能的。

对我来说,update_process_times中的恐慌可能暗示了任务结构指针的问题...但是我真的不知道。

请记住,内核中的事情常常在发生故障发生之前很早就出错了,因此,即使似乎并没有产生效果,代码中的任何地方都可能是错误的。如果可以的话,我建议您逐步添加或删除代码并检查问题,以查看是否可以隔离它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top