Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Triple fault
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{for|the geological term|triple junction}} {{One source|date=May 2012}} On the [[x86]] [[computer architecture]], a '''triple fault''' is a special kind of [[Exception handling|exception]] generated by the [[Central processing unit|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 [[Intel 80286|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.<ref name="Collins_2000_Triple"/><ref name="Collins_2000_Reset"/> ==Possible causes of triple faults== Triple faults indicate a problem with the [[operating system]] [[Kernel (operating system)|kernel]] or [[device driver]]s. 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|date=July 2010}} ==Virtual machines== <!--could be worked in here if find specific information: http://www.intel.com/cd/ids/developer/asmo-na/eng/197666.htm or pacifica --> 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 [[Disassembler|disassembly]] of the last instruction executed, similar to the output of the <code>rg</code> debugger command. When using [[Intel VT-x]], a triple fault causes a VM exit, with exit reason 2. The exit reason is saved to the VMCS and may be handled by the VMM software. In [[VMware]], an error message will be displayed and the virtual machine will need to be reset. ==Other uses== The [[Intel 80286]] processor was the first x86 processor to introduce the now-ubiquitous [[protected mode]]. However, the 286 could not revert to the basic 8086-compatible "[[real mode]]" without resetting the processor, which can only be done using hardware external to the CPU. On the [[IBM Personal Computer AT|IBM AT]] and compatibles, the documented method of doing this was to use a special function on the [[Intel 8042]] keyboard controller, which would assert the RESET pin of the processor. However, intentionally triple-faulting the CPU was found to cause the transition to occur much faster (0.8 milliseconds instead of 15+ milliseconds) and more cleanly, permitting multitasking operating systems to switch back and forth at high speed.<ref name="Osterman_2005_286"/> Some operating system kernels, such as [[Linux kernel|Linux]], still use triple faults as a last effort in their rebooting process if an [[Advanced Configuration and Power Interface|ACPI]] reboot fails. This is done by setting the IDT register to 0 and then issuing an interrupt.<ref name="Collins_2000_Triple"/> Since the table now has length 0, all attempts to access it fail and the processor generates a triple fault. ==References== {{Reflist|refs= <ref name="Collins_2000_Triple">{{cite web |author-first=Robert |author-last=Collins |title=Triple Faulting the CPU |date=2000 |work=Productivity Enhancements and Programming Tricks |url=http://www.rcollins.org/Productivity/TripleFault.html |access-date=2015-11-22 |url-status=live |archive-url=https://web.archive.org/web/20170909120639/http://www.rcollins.org/Productivity/TripleFault.html |archive-date=2017-09-09}}</ref> <ref name="Collins_2000_Reset">{{cite web |title=ELEGANT RESET |author-first=Robert |author-last=Collins |date=2000 |url=http://www.rcollins.org/ftp/source/3fault/reset.asm |access-date=2017-09-09 |url-status=live |archive-url=https://web.archive.org/web/20170909113216/http://www.rcollins.org/ftp/source/3fault/reset.asm |archive-date=2017-09-09}}</ref> <ref name="Osterman_2005_286">{{cite web |title=Faster Syscall Trap redux |author-first=Larry |author-last=Osterman |date=2005-02-08 |work=Larry Osterman's WebLog |publisher=[[MSDN Blogs]] |url=https://blogs.msdn.microsoft.com/larryosterman/2005/02/08/faster-syscall-trap-redux/ |access-date=2010-07-23 |url-status=live |archive-url=https://web.archive.org/web/20170909113828/https://blogs.msdn.microsoft.com/larryosterman/2005/02/08/faster-syscall-trap-redux/ |archive-date=2017-09-09}}</ref> }} [[Category:Computer errors]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Citation needed
(
edit
)
Template:For
(
edit
)
Template:One source
(
edit
)
Template:Reflist
(
edit
)