Re: Page Fault auf 6.1

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Tue, 24 Apr 2007 12:44:20 +0200 (CEST)

Bernd Walter wrote:
> Nicola Tiling wrote:
> > [...]
> > > Ein Stacktrace (bt-Befehl in kgdb) ist der erste Schritt, um
> > > heraus zu bekommen welcher Programmcode das versucht hat.
> > > Der Rest muss sich dann zeigen, wenn man die Programmzeile kennt.
> >
> > Ich kann leider kein Programm sehen. Außerdem mault es rum wegen eines
> > "Previous frame inner to this frame"
>
> Genau da ist leider das Problem :(
> Bis zu der Stelle sind das nur Angaben über den Traphandler.
> Die Funktionsadresse 0 hatte ich schon in der letzten Mail gesehen, aber
> gehofft, dass im Stack noch was verwendbares steht.
>
> > [...]
> > #6 0xc06720da in calltrap () at /usr/src/sys/i386/i386/exception.s:139
> > #7 0x00000000 in ?? ()
> > Previous frame inner to this frame (corrupt stack?)
>
> Was hast du für einen Scheduler laufen?
> Kannst du mal einen ps auf den dump ansetzen?

(Hinweis für Nicola: ps -alxwwM /var/crash/vmcore.0)

> Ist zwar nur noch rumstochern, aber handfeste Informationen ergeben sich
> momentan nicht :(
> Vielleicht hat ja jemand anders noch eine gute Idee.

Leider fällt mir auch nichts Konkretes ein. Der aktuelle
Prozess zum Crash-Zeitpunkt war der sshd, was ein Indiz
dafür sein könnte, dass die Schuld vielleicht beim NIC-
Treiber zu suchen ist.

Man kann's nur soweit rekonstruieren, dass irgendetwas
den Stack überschrieben hat. Als er dann ein "ret" aus-
führen wollte (beim Rücksprung aus einer Funktion), lag
da zufällig eine Null auf dem Stack, weshalb er dann zu
Adresse 0x0 springen wollte, was unweigerlich zum Page-
fault führt. Ursache könnte ein Buffer-Overflow einer
lokalen Variablen in einer Funktion des NIC-Treibers
sein.

Anhand der Differenz von Stack Pointer und Frame Pointer
(20 Bytes) könnte man jetzt versuchen, einzugrenzen,
welche Funktionen in Betracht kommen. Aber dazu muss
man erstmal wissen, welcher NIC-Treiber überhaupt ver-
wendet wird (und die exakte Version). :-)

Wenn der Rechner lange Zeit problemlos lief, war es viel-
leicht auch nur das sprichwörtliche Alpha-Teilchen, das
zufällig irgendwo im RAM (oder Cache) eingeschlagen ist
und ein Bit gekippt hat.

Schlussendlich könnte man auch ein Update auf ein aktu-
elles 6-stable empfehlen (wenn ich mich richtig erinnere,
erwähnte Nicola, dass noch 6.1 auf dem Rechner läuft).

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M.
Handelsregister: Registergericht Muenchen, HRA 74606,  Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün-
chen, HRB 125758,  Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart
FreeBSD-Dienstleistungen, -Produkte und mehr:  http://www.secnetix.de/bsd
"... there are two ways of constructing a software design:  One way
is to make it so simple that there are _obviously_ no deficiencies and
the other way is to make it so complicated that there are no _obvious_
deficiencies."        -- C.A.R. Hoare, ACM Turing Award Lecture, 1980
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 24 Apr 2007 - 12:45:26 CEST

search this site