Triple fault
This article relies largely or entirely on a single source. (May 2012) |
On the x86 computer architecture, a triple fault is a special kind of exception generated by the CPU when an exception occurs while the CPU is trying to invoke the double fault exception handler, which itself handles exceptions occurring while trying to invoke a regular exception handler.
x86 processors beginning with the 80286 will cause a shutdown cycle to occur when a triple fault is encountered. This typically causes the motherboard hardware to initiate a CPU reset, which, in turn, causes the whole computer to reboot.[1][2]
Possible causes of triple faults
Triple faults indicate a problem with the operating system kernel or device drivers. In modern operating systems, a triple fault is typically caused by a buffer overflow or underflow in a device driver which writes over the interrupt descriptor table (IDT). If the IDT is corrupted, when the next interrupt happens, the processor will be unable to call either the needed interrupt handler or the double fault handler because the descriptors in the IDT are corrupted.[citation needed]
Virtual machines
In QEMU, a triple fault produces a dump of the virtual machine in the console, with the instruction pointer set to the instruction that triggered the first exception.
In VirtualBox, a triple fault causes a Guru Meditation error to be displayed to the user. A virtual machine in this state has most features disabled and cannot be restarted. If the VirtualBox Debugger is open, a message is printed indicating a Triple fault has occurred, followed by a register dump and disassembly of the last instruction executed, similar to the output of the rg
debugger command.
When using
Other uses
The
Some operating system kernels, such as
References
- ^ a b Collins, Robert (2000). "Triple Faulting the CPU". Productivity Enhancements and Programming Tricks. Archived from the original on 2017-09-09. Retrieved 2015-11-22.
- ^ Collins, Robert (2000). "ELEGANT RESET". Archived from the original on 2017-09-09. Retrieved 2017-09-09.
- MSDN Blogs. Archivedfrom the original on 2017-09-09. Retrieved 2010-07-23.