kernel panic
Tomek Grzejszczyk
T.Grzejszczyk w elka.pw.edu.pl
Pon, 23 Cze 2003, 16:48:55 CEST
Cześć,
Piszę tutaj w ramach próby uzyskiwania pierwszej pomocy. Używam jądra
2.4.20-8 z
ftp://ep09.kernel.pl/pub/People/cieciwa/Ra-2.4.20-8.i686_gcc2
Próbuję napisać driver do portu podczerwieni, metodą modyfikacji już
instniejącego driver'a. Jak na razie doszedłem do kernel panic.
Sekwencja wydarzeń wygląda tak:
-hotplug ładuje mój moduł do portu podczerwieni podłączonego po USB
-ifconfig irda0 up
-irattach irda0 -s (w zasięgu nie ma żadnego urządzenia IR) i tutaj:
-wysłanie pakietu do urządzenia
-wysłanie pakietu kontrolnego do urządzenia
-urządzenie zaczyna odsyłać ramki pełne zer. Po odebraniu trzeciej takiej
ramki (ciekawe że zawsze po trzeciej) następuje kernel panic z taką oto
treścią:
----------------------
Bug at sched.c: 566!
invalid operand: 0000
CPU: 0
EIP: 0010 [<c01acda9>] Not tainted
EFLAGS: 0010286
...tutaj zawartość rejestrów...
Process swapper(pid:0, stacpage=c0143000)
Stack: ...
Call Trace: ...
Code: ...
<0> Kernel panic: Aiee, killing interrupt handler!
In interrupt handler - not syncing
-----------------------
Nie wiem jaka część tej informacji jest przydatna żeby zlokalizować
bug'a. Zajrzałem do sched.c no i wychodzi na to że panic jest efektem
wywołania scheduler'a w trakcie przerwania. Nie wiem teraz gdzie szukać
błędu. Czy to ja wywołuję w moim module funkcję, której nie powinienem?
Ale w takim razie dlaczego dopiero po trzeciej przychodzącej ramce pada?
A może błąd jest gdzieś poza moim kodem? Jak go zlokalizować/poprawić?
Będę wdzięczny za sugestie dalszego postępowania, ewentualne porady i
skierowania na właściwe listy dyskusyjne.
Pozdrawiam,
Tomek Grzejszczyk
Więcej informacji o liście dyskusyjnej pld-kernel