Ядро паники, похоже, не связано с изменениями - PullRequest
1 голос
/ 01 мая 2010

Я внес изменения в 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

И ошибка: «В обработчике прерываний -не синхронизируется "

Я знаю, что трудно сказать без какого-либо кода, но кто-нибудь может сделать обоснованное предположение, чтобы указать мне правильное направление?

1 Ответ

1 голос
/ 01 мая 2010

Я могу дать вам свою собственную мантру при отладке проблем с ядром: «это всегда ваша вина».

Я часто вижу проблемы, связанные с перезаписью памяти вне того места, где я работаю - например, если я передаю аппаратному оборудованию неправильный адрес для DMA. Вы можете как-то завинчивать замок; это кажется возможным в этом случае, если вы видите тайм-аут: забытая заблокированная блокировка вызывает тайм-аут из-за зависания.

Для меня паника в update_process_times может указывать на проблему с указателем структуры задачи ... но я действительно понятия не имею.

Имейте в виду, что в ядре часто происходят ошибки задолго до того, как происходит сбой, поэтому виноват может быть неправильный фрагмент кода, даже если кажется, что он не даст эффекта Если вы можете, я рекомендую постепенно добавлять или удалять ваш код и проверять наличие проблемы, чтобы увидеть, можете ли вы ее изолировать.

...