Another group of STOP messages is caused by a software condition detected by the processor. This condition, called a software trap, happens when a processor detects a problem in an executing instruction from which the processor will not continue. For instance, a processor will not carry out an instruction that contains invalid operands.
When you get a STOP message that is caused by a software trap, follow the steps given in "Remaining STOP Messages," later in this chapter.
The following is an example of the first line of the STOP message that is displayed for all software traps:
*** STOP: 0x0000007F (0x0000000n, 00000000, 00000000, 00000000) UNEXPECTED_KERNEL_MODE_TRAP
The first parameter (shown as 0x0000000n in the example) in the message parameter list indicates which of twelve possible traps has occurred. For instance, in the case of an instruction that contains invalid operands, the message will appear as follows:
*** STOP: 0x0000007F (0x00000006, 00000000, 00000000, 00000000) UNEXPECTED_KERNEL_MODE_TRAP
The following table shows the possible values and their meanings for that first parameter.
Parameter | Processor detected |
0x00000000 | An attempt to divide by zero. |
0x00000001 | A system-debugger call. |
0x00000003 | A debugger breakpoint. |
0x00000004 | An arithmetic operation overflow. |
0x00000005 | An array index that exceeds the array bounds. |
0x00000006 | Invalid operands in an instruction or an attempt to execute a protected-mode instruction while running in real mode. |
0x00000007 | A hardware coprocessor instruction, with no coprocessor present. |
0x00000008 | An error while processing an error (also known as a "double fault"). |
0x0000000A | A corrupt 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 (also known as a "general protection fault"). |