2010-04-30 99 views
1

我在sched.c中的Linux内核2.4。(作业)所做的更改变化,现在系统进入内核崩溃。奇怪的是:它似乎只传递在最后启动检查和初始化,和恐慌,显示兴田以下堆栈跟踪了很多:内核恐慌似乎是无关

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 

和错误是:“在中断处理程序 - 是否未同步“

我知道这很难说没有任何代码,但有谁能够使一个受过教育的猜测指向我朝着正确的方向吗?

+0

不是没有代码,或者至少是你的关键内容的最低限度的描述。 – 2010-04-30 20:19:47

回答

1

调试内核问题时,我可以给你我个人的口头禅:“它总是你的错。”

我经常看到由于覆盖在那里我工作以外的内存问题 - 如果我喂硬件的地址不正确的DMA为例。你可能会以某种方式搞砸一个锁;在这种情况下,如果看到超时情况,这似乎是可能的:忘记锁定的锁定会导致由于挂起而发生超时。

对我来说,在update_process_times恐慌可能会建议与任务结构指针的问题......但我真的不知道。

请记住,事情在内核经常出问题长在故障发生前,所以错了位代码中的任何地方可能是罪魁祸首,即使它似乎并不像它应该有效果。如果可以,我建议逐步添加或删除代码并检查问题,看看是否可以将其隔离。

+0

它看起来像我们意外删除了sched.h中的某些东西 我们将这些更改重新插入新版本,现在它可以正常工作。 感谢您的建议,现在我想投票此线程关闭。对于任何人来说,这似乎太不专心了。 – EpsilonVector 2010-04-30 21:04:56