[U]WinDbg Help File Entry:[/U] The UNEXPECTED_KERNEL_MODE_TRAP bug check has a value of 0x0000007F. This bug check indicates that the Intel CPU generated a trap and the kernel failed to catch this trap.
This trap could be a [I]bound trap [/I](a trap the kernel is not permitted to catch) or a [I]double fault [/I](a fault that occurred while processing an earlier fault, which always results in a system failure).[INDENT][B]Parameters[/B][/INDENT]
The first parameter that appears on the blue screen specifies the trap number.
The most common trap codes include the following:
[LIST=|INDENT=1]
[*]0x00000000, or Divide by Zero Error, indicates that a DIV instruction is executed and the divisor is zero. Memory corruption, other hardware problems, or software failures can cause this error.
[*]0x00000004, or Overflow, occurs when the processor executes a call to an interrupt handler when the overflow (OF) flag is set.
[*]0x00000005, or Bounds Check Fault, indicates that the processor, while executing a BOUND instruction, finds that the operand exceeds the specified limits. A BOUND instruction ensures that a signed array index is within a certain range.
[*]0x00000006, or Invalid Opcode, indicates that the processor tries to execute an invalid instruction. This error typically occurs when the instruction pointer has become corrupted and is pointing to the wrong location. The most common cause of this error is hardware memory corruption.
[*]0x00000008, or Double Fault, indicates that an exception occurs during a call to the handler for a prior exception. Typically, the two exceptions are handled serially. However, there are several exceptions that cannot be handled serially, and in this situation the processor signals a double fault. There are two common causes of a double fault:
[LIST]
[*]A kernel stack overflow. This overflow occurs when a guard page is hit, and the kernel tries to push a trap frame. Because there is no stack left, a stack overflow results, causing the double fault. If you think this overview has occurred, use [B]Link Removed[/B] to determine the stack limits, and then use [B]Link Removed[/B] with a large parameter (for example, [B]kb 100[/B]) to display the full stack.
[*]A hardware problem.
[/LIST]
[/LIST]
The less-common trap codes include the following:
[LIST=|INDENT=1]
[*]0x00000001 — A system-debugger call
[*]0x00000003 — A debugger breakpoint
[*]0x00000007 — A hardware coprocessor instruction with no coprocessor present
[*]0x0000000A — A corrupted Task State Segment
[*]0x0000000B — An access to a memory segment that was not present
[*]0x0000000C — An access to memory beyond the limits of a stack
[*]0x0000000D — An exception not covered by some other exception; a protection fault that pertains to access violations for applications
[/LIST]
For other trap numbers, see an Intel architecture manual.[INDENT][B]Cause[/B][/INDENT]
Bug check 0x7F typically occurs after you install a faulty or mismatched hardware (especially memory) or if installed hardware fails.
A double fault can occur when the kernel stack overflows. This overflow occurs if multiple drivers are attached to the same stack. For example, if two file system filter drivers are attached to the same stack and then the file system recurses back in, the stack overflows.[INDENT][B]Resolving the Problem[/B][/INDENT]
[I]Debugging:[/I] Always begin with the [B]Link Removed[/B] extension.
If this extension is not sufficient, use the [B]Link Removed[/B] debugger command.
[LIST=|INDENT=1]
[*]If [B]kv[/B] shows a [B]taskGate[/B], use the [B]Link Removed[/B] command on the part before the colon.
[*]If [B]kv[/B] shows a trap frame, use the [B]Link Removed[/B] command to format the frame.
[*]Otherwise, use the [B]Link Removed[/B] command on the appropriate frame. (On x86-based platforms, this frame is associated with the procedure [B]NT!KiTrap[/B].)
[/LIST]
After using one of these commands, use [B]kv[/B] again to display the new stack.
[I]Troubleshooting: [/I]If you recently added hardware to the computer, remove it to see if the error recurs. If existing hardware has failed, remove or replace the faulty component. Run hardware diagnostics that the system manufacturer supplies to determine which hardware component failed.
The memory scanner is especially important. Faulty or mismatched memory can cause this bug check. For more informaiton about these procedures, see the owner's manual for your computer. Check that all adapter cards in the computer are properly seated. Use an ink eraser or an electrical contact treatment, available at electronics supply stores, to ensure adapter card contacts are clean.
If the error appears on a newly installed system, check the availability of updates for the BIOS, the SCSI controller, or network cards. These kind of updates are typically available on the Web site or BBS of the hardware manufacturer.
Confirm that all hard disk drives, hard disk controllers, and SCSI adapters are listed in the Microsoft Windows Marketplace Tested Products List.
If the error occurred after the installation of a new or updated device driver, you should remove or replace the driver. If, under this circumstance, the error occurs during the startup sequence and the system partition is formatted with NTFS, you might be able to use Safe Mode to rename or delete the faulty driver. If the driver is used as part of the system startup process in Safe Mode, you have to start the computer by using the Recovery Console in order to access the file.
Also restart your computer, and then press F8 at the character-based menu that displays the operating system choices. At the [B]Advanced Options[/B] menu, select the [B]Last Known Good Configuration[/B] option. This option is most effective when you add only one driver or service at a time.
Overclocking (setting the CPU to run at speeds above the rated specification) can cause this error. If you have overclocked the computer that is experiencing the error, return the CPU to the default clock speed setting.
Check the System Log in Event Viewer for additional error messages that might help identify the device or driver that is causing the error. You can also disable memory caching of the BIOS to try to resolve the problem.
If you encountered this error while upgrading to a new version of the Windows operating system, the error might be caused by a device driver, a system service, a virus scanner, or a backup tool that is incompatible with the new version. If possible, remove all third-party device drivers and system services and disable any virus scanners before you upgrade. Contact the software manufacturer to obtain updates of these tools. Also make sure that you have installed the latest Windows Service Pack.
Finally, if all the above steps do not resolve the error, take the system motherboard to a repair facility for diagnostic testing. A crack, a scratched trace, or a defective component on the motherboard can also cause this error.
[U]WinDbg Output Example:[/U]
UNEXPECTED_KERNEL_MODE_TRAP (7f)
This means a trap occurred in kernel mode, and it's a trap of a kind
that the kernel isn't allowed to have/catch (bound trap) or that
is always instant death (double fault). The first number in the
bugcheck params is the number of the trap (8 = double fault, etc)
Consult an Intel x86 family manual to learn more about what these
traps are. Here is a *portion* of those codes:
If kv shows a taskGate
use .tss on the part before the colon, then kv.
Else if kv shows a trapframe
use .trap on that value
Else
.trap on the appropriate frame will show where the trap was taken
(on x86, this will be the ebp that goes with the procedure KiTrap)
Endif
kb will then show the corrected stack.
Arguments:
Arg1: 0000000000000008, EXCEPTION_DOUBLE_FAULT
Arg2: 0000000080050031
Arg3: 00000000000006f8
Arg4: fffff80002af243d