|
|
| Schwerer Ausnahmefehler - Nicht von Windows! |
Kategorie: Artikel | Views: 201 |
Was ist das eigentlich? Damit kann doch so keiner was anfangen!
Jeder der schon mal einen solchen Fehler auf dem Schirm hatte, geht eher davon aus das dieser Fehler von Windows kommt oder nicht? Aber falsch gedacht!
Der schwere Ausnahmefehler XY ist an Adresse xxxx:xxxxxxxx aufgetreten
Schwere Ausnahmefehler sind Codes, die von einem Programm in den folgenden Fällen zurückgegeben werden:
• Ein Zugriff auf eine ungültige Anweisung hat stattgefunden.
• Es wurde auf ungültige Daten oder ungültigen Code zugegriffen
• Die Privilegebene einer Operation ist ungültig
Wenn einer dieser Fälle eintritt, gibt der Prozessor eine Ausnahme an das Betriebssystem zurück, was wiederum als ein schwerer Ausnahmefehler behandelt wird. In vielen Fällen kann die Ausnahme nicht behoben werden, und das System muss entweder neu gestartet oder heruntergefahren werden, je nach Schweregrad des Fehlers.
In der oben genannten Beispielfehlermeldung steht XY für die tatsächliche Prozessorausnahme von 00 bis 0F (beachten Sie bitte, dass das "h", das nach 0E, 0F usw. aufgeführt ist, in den folgenden Erläuterungen in der Fehlermeldung häufig weggelassen wird). xxxx:xxxxxxxx steht für den erweiterten Anweisungszeiger auf das Code-Segment und die 32-Bit-Adresse ist die tatsächliche Adresse, an der die Ausnahme aufgetreten ist.
Windows verursacht diese Fehler nicht, verfügt aber dennoch über eine Ausnahmebehandlungsroutine für jene bestimmte Prozessorausnahme, die obenstehende Fehlermeldung anzeigt.
Prozessorausnahmen sowie deren Definitionen
00: Divisionsfehler
Der Prozessor gibt diese Ausnahme bei einem Divisionsfehler zurück. Ein Divisionsfehler tritt dann auf, wenn versucht wird, durch Null zu dividieren oder wenn das Ergebnis des Vorgangs nicht in den Zieloperanden passt.
02: NMI-Interrupt
Interrupt 2 ist für ein nichtmaskierbares Interrupt der Hardware vorbehalten. Es werden keine Ausnahmen durch Interrupt 2 aufgefangen.
04: Überlauf-Trap
Ein Überlauf-Trap tritt dann auf, wenn eine INTO-Anweisung ausgeführt wurde und das OF-Bit auf 1 gesetzt ist.
05: Grenzüberprüfungsfehler
Die BOUND-Anweisung vergleicht einen Serienindex mit einer oberen und unteren Grenze. Wenn sich der Index außerhalb des Bereichs befindet, fängt der Prozessor das Interrupt 05 auf.
06: Ungültiger Opcode
Dieser Fehler wird zurückgegeben, wenn eine der folgenden Bedingungen zutrifft:
• Der Prozessor versucht, ein Bit-Muster zu dekodieren, das keiner gültigen Computeranweisung entspricht.
• Der Prozessor versucht, eine Anweisung auszuführen, die ungültige Operanden enthält.
• Der Prozessor wird im virtuellen 8086-Modus ausgeführt und versucht, eine Anweisung im abgesicherten Modus auszuführen.
• Der Prozessor versucht, ein LOCK-Präfix mit einer Anweisung, die nicht gesperrt werden kann, auszuführen.
07: Coprozessor nicht verfügbar
Dieser Fehler tritt auf, wenn der Computer nicht über einen mathematischen Coprozessor verfügt, und das EM-Bit des Registers CR0 so eingerichtet ist, dass die Emulation des numerischen Datenprozessors verwendet wird. Wenn eine Gleitkommaoperation ausgeführt wird, tritt ein Interrupt 07 auf.
Dieser Fehler tritt auch dann auf, wenn ein mathematischer Coprozessor verwendet wird und ein Aufgabenwechsel stattfindet. Interrupt 07 teilt dem Prozessor mit, dass der aktuelle Zustand des Coprozessors gespeichert werden muss, damit er von einer anderen Aufgabe verwendet werden kann.
08: Doppelfehler
Bei der Verarbeitung einer Ausnahme kann es dazu kommen, dass eine zweite Ausnahme ausgelöst wird. Wenn dieser Fall eintritt, gibt der Prozessor ein Interrupt 08 für einen Doppelfehler aus.
09: Überlauf des Coprozessor-Segments
Dieser Fehler tritt auf, wenn eine Gleitkomma-Anweisung einen Speicherzugriff auslöst, der über das Ende des Segments hinausläuft. Wenn sich die Startadresse des Gleitkommaoperanden außerhalb des Segments befindet, tritt eine allgemeine Schutzverletzung (Interrupt 0D) ein.
10 (0Ah): Ungültiges Aufgabenzustandssegment
Da das Aufgabenzustandssegment (Task State Segment) eine Vielzahl von Beschreibungen enthält, ist es möglich, dass verschiedene Bedingungen Ausnahme 0A auslösen. In der Regel kann der Prozessor ausreichend Informationen vom Aufgabenzustandssegment einholen, um einen weiteren Fehler auszugeben, der auf das tatsächliche Problem zeigt. Weitere Informationen finden Sie unter Microsoft's Programming the 80386/80486 Guide.
11 (0Bh): Nicht vorhanden-Fehler
Das Interrupt "Nicht vorhanden" ermöglicht dem Betriebssystem das Implementieren von virtuellem Speicher durch den Segmentierungsmechanismus. Wenn ein Segment als "nicht vorhanden" gekennzeichnet wird, wird es auf die Festplatte ausgelagert. Das Interrupt 0B wird ausgelöst, wenn eine Anwendung Zugriff auf das Segment benötigt.
12 (0Ch): Stapelfehler
Ein Stapelfehler tritt mit Fehler-Code 0 auf, wenn eine Anweisung auf Speicher, der außerhalb des Stapelsegments liegt, verweist. Wenn das Betriebssystem Expand-down-Segmente unterstützt, sollte das Problem vermindert werden, wenn die Größe des Stapels vergrößert wird. Durch Laden des Stapelsegments mit ungültigen Beschreibungen wird eine allgemeine Schutzverletzung ausgelöst.
13 (0Dh): Allgemeine Schutzverletzung
Jede Bedingung, die nicht von einer der anderen Prozessorausnahmen erfasst wird, führt zu einer allgemeinen Schutzverletzung. Die Ausnahme weist darauf hin, dass dieses Programm Schäden im Speicher aufweist, was in der Regel zum sofortigen Beenden der Anwendung führt.
14 (0Eh): Seitenfehler
Das Interrupt Seitenfehler ermöglicht dem Betriebssystem das Implementieren von virtuellem Speicher auf der Grundlage einer Seitenanfrage. Ein Interrupt 14 wird in der Regel dann ausgegeben, wenn der Zugriff auf einen Seitenverzeichniseintrag oder eine Seitentabelle erfolgt und das vorhandene Bit dabei auf 0 (Nicht vorhanden) gesetzt ist. Das Betriebssystem stellt die Seite zur Verfügung (indem die Seite normalerweise aus dem virtuellen Speicher abgerufen wird) und gibt die Anweisung, die zum Fehler geführt hat, erneut aus, um auf das Segment dann zuzugreifen. Ein Seitenfehler tritt auch bei einem Verstoß gegen die Seitenschutzregeln auf (z. B. wenn die Abfrage scheitert oder abgefragte Daten ungültig sind oder der Code, der den Fehler ausgegeben hat, gegen die Schutzregeln für den Prozessor verstoßen hat). In diesen Fällen übernimmt das Betriebssystem die entsprechende Aktion.
16 (10h): Fehler des Coprozessors
Dieses Interrupt tritt dann auf, wenn eine unmaskierte Gleitkommaausnahme eine vorhergehende Anweisung signalisiert hat. (Da 80386 keinen Zugriff auf die Gleitkommaeinheit (Floating Point Unit) hat, überprüft es den ERROR\-Pin auf diesen Zustand). Dies wird auch dann von einer WAIT-Anweisung ausgelöst, wenn das Bit für "Emulate Math Coprocessor" bei CR0 gesetzt ist.
17 (11h): Ausrichtungskontrollfehler
Dieses Interrupt wird nur bei 80486-CPUs verwendet. Ein Interrupt 17 wird ausgegeben, wenn Code, der bei Ring-Privileg 3 ausgeführt wird, versucht, auf einen Wortoperanden zuzugreifen, der sich nicht an einer Grenze mit gerader Adresse befindet, bzw. auf einen Doppelwortoperanden, der nicht durch vier teilbar ist, bzw. einen "long real" oder "temp real", dessen Adresse nicht durch acht teilbar ist. Die Ausrichtungskontrolle wird deaktiviert, wenn die CPU erstmals eingeschaltet wird, und wird nur im Protected-Mode aktiviert. |
 |
|
•
Wordpress unter Windows Vista |
•
Fehlercodes 0XC004D401 und 0x80080250 |
•
Vista Fehlercodes 0xC004F027, 0xC003E004 und 0xC004E003 |
•
Vista meldet 0xC004C003, 0xC004C001, 0xC004C008, 0xC004C812, 0xCD004F050, 0xC004C4CE und 0x8007232B |
•
Vista Fehlercodes 0x8004FC03, 0X8004FE2D, 0x8004FE33, 0x8004FE91, 0x80072EE7, 0x80072EFD, 0x80072F78 |
•
Windows Vista Probleme mit dem BCD (Boot Configuration Data) |
•
Windows Photo Gallery Problem - Fehler |
•
Windows Vista Problem im "Stand By" - Modus |
•
Vista Absturz bei NMI-Interrupt |
•
WLAN Hacken / aufsprüren mit Netstumbler |
|
|
|
|
|
|