Triple Fault
In der x86 Computerarchitektur ist ein "Triple Fault" eine besondere Art von Ausnahme, welche von der CPU ausgelöst wird, wenn eine Ausnahme auftritt, während die CPU versucht, die "Double Fault"-Ausnahmebehandlung aufzurufen, die beim Versuch auftritt, eine regulären Ausnahmebehandlung aufzurufen.
x86-Prozessoren ab dem 80286 lösen beim Auftreten eines "Triple Fault" einen Herunterfahrzyklus aus. Dies führt in der Regel dazu, dass die Hardware der Hauptplatine einen CPU-Reset auslöst, was wiederum einen Neustart des gesamten Computers zufolge hat.[1][2]
Mögliche Ursachen für "Triple Fault"
[Bearbeiten | Quelltext bearbeiten]"Triple Fault" deutet auf ein Problem mit dem Betriebssystemkern (Kernel) oder den Gerätetreibern hin. In modernen Betriebssystemen wird ein "Triple Fault" in der Regel durch einen Pufferüberlauf oder -unterlauf in einem Gerätetreiber verursacht, der die Deskriptortabelle (IDT) überschreibt. Ist die IDT beschädigt, kann der Prozessor bei der nächsten Unterbrechung weder die erforderliche Unterbrechungsbehandlung, noch die "Double Fault"-Behandlung aufrufen, da die Deskriptoren in der IDT beschädigt sind.[1]
Virtuelle Maschinen
[Bearbeiten | Quelltext bearbeiten]In QEMU führt ein "Triple Fault" dazu, dass ein Speicherauszug der virtuellen Maschine in der Konsole ausgegeben wird, wobei der Befehlszeiger auf den Befehl gesetzt ist, der die erste Ausnahme ausgelöst hat.
In VirtualBox führt ein "Triple Fault" dazu, dass dem Benutzer ein "Guru Meditation"-Fehler angezeigt wird. Bei einer virtuellen Maschine in diesem Zustand sind die meisten Funktionen deaktiviert und sie kann nicht neu gestartet werden. Ist der VirtualBox-Debugger geöffnet, wird eine Meldung ausgegeben, die darauf hinweist, dass ein "Triple Fault" aufgetreten ist, gefolgt von einem Registerauszug und einer Disassemblierung des zuletzt ausgeführten Befehls, ähnlich wie bei der Ausgabe des Debugger Befehls rg.[3][4]
Bei Verwendung von Intel VT-x führt ein "Triple Fault" zum Beenden der VM mit dem Beendigungsgrund 2. Der Beendigungsgrund wird im VMCS gespeichert und kann von der VMM-Software verarbeitet werden.
In VMware wird eine Fehlermeldung angezeigt und die virtuelle Maschine muss neu gestartet werden.[5][6]
Andere Verwendungen
[Bearbeiten | Quelltext bearbeiten]Der Intel 80286 Prozessor war der erste x86 Prozessor, der den heute allgegenwärtigen geschützten Modus einführte. Allerdings konnte der 286 nicht in den grundlegenden, 8086-kompatiblen "Real Mode" zurückkehren, ohne den Prozessor zurückzusetzen, was nur mithilfe von Hardware außerhalb der CPU möglich war. Auf dem IBM AT und kompatiblen Systemen bestand die dokumentierte Vorgehensweise darin, eine spezielle Funktion des Intel 8042 Tasterturcontrollers zu nutzen, die den RESET-Pin des Prozessors aktivierte. Es stellte sich jedoch heraus, dass ein absichtlich ausgelöster "Triple Fault" der CPU den Übergang wesentlich schneller (0,8 Millisekunden statt 15+ Millisekunden) und sauberer bewirkte, wodurch Multitasking-Betriebssysteme mit hoher Geschwindigkeit hin und her wechseln konnten.[1]
Einige Betriebssystemkerne, wie beispielsweise Linux, nutzen nach wie vor "Triple Fault" als letzten Versuch im Neustartprozess, falls ein ACPI-Neustart fehlschlägt. Dies geschieht, indem das IDT-Register auf 0 gesetzt und anschließend ein Interrupt ausgelöst wird. Da die Tabelle nun die Länge 0 hat, schlagen alle Zugriffsversuche fehl und der Prozessor löst einen "Triple Fault" aus.[7]
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- 1 2 3 Manuals for Intel® 64 and IA-32 Architectures. Abgerufen am 15. Oktober 2026 (englisch, Volume 1 Chapter 6.5 und Volume 3 Chapter 7).
- ↑ Triple Faulting the CPU. Abgerufen am 15. Oktober 2026 (englisch).
- ↑ Guru Meditation 1155 (VINF_EM_TRIPLE_FAULT) on 5.0.12 - virtualbox.org. Abgerufen am 15. Oktober 2026 (englisch).
- ↑ Advanced Topics. August 2025, abgerufen am 15. Oktober 2026 (amerikanisches Englisch).
- ↑ Powering on a virtual machine fails with the error: A fault has occurred causing a virtual CPU to enter the shutdown state. Abgerufen am 15. Oktober 2026 (englisch).
- ↑ Guest OS within a VM abruptly restarts with the event: A fault has occurred causing a virtual CPU to enter the shutdown state. Abgerufen am 15. Oktober 2026 (englisch).
- ↑ linux/arch/x86/kernel/reboot.c at master · torvalds/linux. Abgerufen am 15. Oktober 2026 (englisch).