Wer kann diese Fehlermeldung erklären:
LITHTECH verursachte einen Fehler durch eine ungültige Seite
in Modul ~DF394B.TMP bei 016f:100586b8.
Register:
EAX=00000000 CS=016f EIP=100586b8 EFLGS=00010246
EBX=00004d28 SS=0177 ESP=006ef9cc EBP=006ef9d8
ECX=00000cdb DS=0177 ESI=0099ce0b FS=336f
EDX=00007c3b ES=0177 EDI=004af2dd GS=0000
Bytes bei CS:EIP:
66 8b 44 1f fc d1 e8 83 c0 07 99 83 e2 07 03 c2
Stapelwerte:
00efe1c8 100722f8 000000c8 006efa04 100180d0 00400000 00efe1c8
100722f8 000000c8 000000c8 00000000 00d67f80 00400001 00d6ba18
006efa78 00d35af8
Vielen Dank im vorraus.
MfG Wild
Allgemeines 22.041 Themen, 149.589 Beiträge
Hi!
Wennn du das unbedingt wissen willst, erkläre ich dir das gerne,. Ich kann dir aber auch schon vorher sagen, dass dir das (und mir auch) nicht's bringt.
OK, das ist die Erklärung:
Der Fehler ist ein Zugriff auf eine ungültige Seite.
Was ist das für ein Fehler? Einer von "ganz Unten", den meldet die CPU, wenn sie eine verbotene Operation ausführt (page fault).
Um zu verstehen, was eine ungültige Seite ist, muss man wissen, wie die CPU den Speicher sieht: grob gesagt, wird der Speicher in einzelne Bereiche aufgeteilt. Diese Bereiche werden als Seiten (pages) bezeichnet. Die Speicherverwaltung des Betriebssystems kann nun diese Speicherseiten verschiedenen Prozessen zuordnen und auch festlegen, ob einzelne Seiten nur gelesen oder auch beschrieben werden dürfen. Zusätzlich wird festgelegt, ob eine Speicherseite Daten oder Programmcode enthält.
Der Befehlscode der CPU (die Maschinensprache) kennt diese Speichereinteilung nicht. Er kann im Prinzip auch in Speicherbereiche schreiben, die als Nurlese-Seite eingerichtet wurden. Deshalb überprüft die CPU zusätzlich ständig, ob solche verbotenen Speicherzugriffe im Programmcode ausgeführt werden. Wenn das der Fall ist, dann löst die CPU einen Fehler aus. Bei einem falschen Lese- oder Schreibzugriff wird dann ein Seitenfehler erzeugt und an die Fehlerbehandlungsroutine des Betriebssystems übergeben.
Diese Routine beendet den Prozess, der den Fehler ausgelöst hat und gibt die Registerbelegung der CPU zum Zzeitpunkt, als der Fehler auftrat aus. Und genau das sieht du nun.
Was kann man daraus erkennen?
Nichts! Jedenfalls als Anwender. Diese Information nützt nur dem Softwareentwickler etwas, wenn er gerade ein Programm schreibt und es testet.
Beim der PC-Fehlermeldung kann man evtl. noch einen Prozessnahmen finden (bei dir LITHTECH), aber was da warum den Seitenfehler ausgelöst hat, kann man aber nicht erkennen. Woher auch? Man müsste sich den Programmquelltext ansehen, um zu wissen, was genau da programmiert wurde.
Evtl. ist ja der Prozess komplett schuldlos und hat eine Treiberfunktion aufgerufen, die dann den Fehler ausgelöst hat, oder die Hardwarespinnt und hat falsche Werte an den Prozess geliefert...
Bis denn
Andreas
