Pregunta

Hice cambios en sched.c en el núcleo de Linux 2.4 (tarea), y ahora el sistema entra en pánico del kernel. Lo extraño es: parece que pasar un montón de cheques y arrancar inicializaciones, y pánicos sólo muy al final, mostrando HTE seguimiento de pila:

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

Y el error es: "En manejador de interrupciones - No sincronizar"

Sé que es difícil de decir sin ningún tipo de código, pero puede alguien hacer una conjetura que me señale en la dirección correcta?

¿Fue útil?

Solución

Te puede dar mi propio mantra personal al depurar problemas en el núcleo: "siempre es tu culpa"

A menudo ver problemas debido a sobrescribir la memoria fuera de donde estoy trabajando - si me alimento de hardware una dirección incorrecta para DMA por ejemplo. Se le puede meter la pata una cerradura de alguna manera; que parece posible en este caso si usted está viendo un tiempo de espera:. una cerradura bloqueada olvidado está causando un tiempo de espera que se produzca debido a un bloqueo

Para mí, un pánico en update_process_times podría sugerir un problema con el puntero estructura tarea ... pero realmente no tienen idea.

Tenga en cuenta que las cosas en el núcleo menudo van mal mucho antes de que se produzca un fallo, por lo que un poco mal en cualquier lugar en el código puede ser el culpable, aunque no parece que debería tener un efecto. Si es posible, recomiendo incrementalmente adición o eliminación de su código y la comprobación de problema para ver si se puede aislarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top