يبدو أن ذعر النواة لا علاقة له بالتغييرات
-
02-10-2019 - |
سؤال
لقد قمت بإجراء تغييرات في Sched.C في Linux kernel 2.4 (الواجب المنزلي) ، والآن يذهب النظام إلى ذعر kernel. الشيء الغريب هو: يبدو أنه يمر بالكثير من اختبارات التمهيد والتهيئة ، والذعر فقط في النهاية ، مما يظهر 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 مشكلة في مؤشر هيكل المهمة ... لكن ليس لدي أي فكرة.
ضع في اعتبارك أن الأمور في kernel غالباً ما تسوء قبل حدوث الفشل ، لذلك قد يكون اللوم الخاطئ في أي مكان في الكود ، حتى لو كان لا يبدو أنه يجب أن يكون له تأثير. إذا استطعت ، أوصي بإضافة الكود أو إزالة الكود بشكل تدريجي والتحقق من المشكلة لمعرفة ما إذا كان يمكنك عزله.