質問

Linux Kernel 2.4(宿題)でSched.cで変更を加えましたが、システムはカーネルパニックになりました。奇妙なことは、多くの起動チェックと初期化に合格し、最後にパニックに渡すように思われます。

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