linux-l: Kernel OOPS

Soeren Sonnenburg sonnenburg at informatik.hu-berlin.de
Mi Okt 25 11:01:22 CEST 2000


> >   Unable to handle kernel paging request at virtual address 08000014
> >   Unable to handle kernel NULL pointer dereference at virtual
> address 00000014
> >
> >
> > Was sagt mir das? Im INet gibt es zwar dutzende Fragen zu
> solchen Fehlern,
>
> Nicht viel :-) ... ich hatte sowas auch mal ziemlich ausführlich
> (Fehler in einem Netzwerkkartentreiber). Bei mir hat er nicht nur die
> Adresse sondern auch den namen der Funktion angegeben, in dem der
> Fehler auftritt. Diese Namen werden mittels der system.map ermittelt,
> da stehen die Anfangsadressen sämtlicher funktionen im Kernel
> drin. Wenn man dann erst mal weiß, in welcher funktion das auftritt
> (und vorausgesetzt, das Problem ist reproduzierbar) kann man einfach
> in die Funktion ein paar `printk' befehler einbauen. Das hat bei mir
> sehr gut geholfen. Der Fehler lag dann in einer der Funktionen
> rückwärts im call-stack. Hat halt ein bischen gedauert, sich schritt
> für schritt näher an das Problem ranzuarbeiten, aber ist prinzipiell
> eigentlich kein Problem.

Dafuer gibt es ja ksymoops und infos dazu unter
/usr/src/linux/Documentation/oops-tracing.txt.

Meistens muss man leider nach dem oops rebooten, da der rechner komplett tot
ist. Da hilft dann eigentlich nur den oops ueber die serielle-console
mitzuloggen....
Den ksymoops output kann man dann auch auf die kernel-mailinglist posten,
vorausgesetzt, man liefert eine genaue Beschreibung, hat die neueste Version
probiert usw. Allerdings ist mit einem schnellen Bugfix nur zu rechnen, wenn
du direkt an den Schuldner (und es ist nicht leicht zu wissen wer schuld
ist...) mailst!

> Man kann auch den Kernel mit debuginformation übersetzen und dann den
> laufenden Kernel mit dem gdb debuggen (dazu gibt's /proc/kcore). Du
> kannst natürlich keine Breakpoints setzen oder den Kernel anhalten
> aber man kann sämtliche Datenstrukturen analysieren. Das hat mir aber
> nicht viel gebracht.

Und mit nem Kernel Patch kannst du sogar ueber die serielle von nem anderen
Rechner aus debuggen und den kernel anhalten und durchtracen... Ziemlich
cool.

Soeren.
--
Und nicht vergessen:Pupi in the lapi ist nicht gleich pupi in the schnulko!



Mehr Informationen über die Mailingliste linux-l