|
What Are Windows 95 Fatal Exception Errors

Windows' Fatal Error Messages Deciphered

The Dreaded BLUE SCREEN

-

Examples

The program 'Netscape' caused the error: Stack overflow

NETSCAPE.EXE caused fault #c00000fd in KERNEL32.DLL at address 014f:bff9a08c

To date, 73 fatal errors have been recorded in this program.  This particular error was recorded 1 times.
Date: 7/14/97 2:38:22 PM
Full path of executable: F:\NETSCAPE4\PROGRAM\NETSCAPE.EXE 

Registers:
EAX=00902078 CS=014f EIP=bff9a08c EFLGS=00000246
EBX=0000ffff SS=0157 ESP=00902074 EBP=009020c8
ECX=0090208c DS=0157 ESI=8159deb8 FS=183f
EDX=ffffffff ES=0157 EDI=00000013 GS=0000
Bytes at CS:EIP:
5e 8b e5 5d c2 10 00 64 a1 00 00 00 00 55 8b ec
Stack dump:
00000001 c00000fd 00000000 00000000 bff9a08c 00000000 00000000 00000001 d6122e9f 183f0157 70be0217 181f013e 00000001 0b522e9f 05ef0b52 05c703c6

-
The program '480_ergo - Netscape' caused the error: Access violation

NETSCAPE.EXE caused fault #c0000005 in NETSCAPE.EXE at address 014f:00412c08

To date, 89 fatal errors have been recorded in this program.  This particular error was recorded 84 times.
Date: 7/17/97 11:31:47 AM
Full path of executable: F:\NETSCAPE4\PROGRAM\NETSCAPE.EXE 

Registers:
EAX=00dd1980 CS=014f EIP=00412c08 EFLGS=00010246
EBX=009ff118 SS=0157 ESP=009ff0c8 EBP=009ff0e4
ECX=00000000 DS=0157 ESI=00e14440 FS=23cf
EDX=ffffffff ES=0157 EDI=00000000 GS=0000
Bytes at CS:EIP:
83 79 28 00 74 f1 8b 45 fc 8b 48 28 e8 b2 52 00
Stack dump:
00a9abe4 00e14440 009ff118 00000000 0000001f 00da8c80 00000000 009ff134 004145e6 009ff118 009ff11c 009ff124 009ff128 009ff130 00a9abe4 00e14440

-
The program 'HTML Assistant Pro 97' caused the error: Unknown exception

PRO97.EXE caused fault #e06d7363 in KERNEL32.DLL at address 014f:bff9a08c

To date, 2 fatal errors have been recorded in this program.  This particular error was recorded 1 times.
Date: 5/26/97 7:28:05 AM
Full path of executable: D:\NETSCAPE\HTMLPRO3\PRO97\PRO97.EXE 

Registers:
EAX=007df5d0 CS=014f EIP=bff9a08c EFLGS=00000246
EBX=007df6e4 SS=0157 ESP=007df5cc EBP=007df620
ECX=007df5f0 DS=0157 ESI=007df660 FS=195f
EDX=ffffffff ES=0157 EDI=007df660 GS=0000
Bytes at CS:EIP:
5e 8b e5 5d c2 10 00 64 a1 00 00 00 00 55 8b ec
Stack dump:
78035838 e06d7363 00000001 00000000 bff9a08c 00000003 19930520 007df670 01222ee8 00000000 7803c0d8 00cc0000 7803d3d8 00000001 78001256 000000b6


What Are Windows 95 Fatal Exception Errors

SUMMARY 

When you attempt to start Windows or an application inside of Windows, you may encounter errors similar to the following: 

  "A Fatal Exception <XY> has occurred at xxxx:xxxxxxxx "
Fatal Exception errors are codes returned by a program in the following cases: 
   - Access to an illegal instruction has been encountered

   - Invalid data or code has been accessed

   - The privilege level of an operation is invalid
When any of these occur, the processor returns an exception to the operating system, which in turn is handled as a Fatal Exception Error. In many cases the exception is nonrecoverable and the system must either be restarted or shutdown, depending upon the severity of the error. 

In the following example of a Fatal Exception error 

  A Fatal Exception <XY> has occurred at xxxx:xxxxxxxx
the <XY> represents the actual processor exception from 00 to 0F. The xxxx:xxxxxxxx represents the enhanced instruction pointer to the code segment and the 8-bit address is the actual address where the exception occurred. 

Windows does not cause these errors, but has the exception handling routine for that particular processor exception, which displays the above message. 

The following article details the processor exceptions and their meaning. 

For more information about troubleshooting strategies for Fatal Exception Errors, see the Knowledge Base articles listed at the end of this document. 

MORE INFORMATION 

The following are the processor exceptions and their definitions: 

00: Divide Fault 

The processor returns this exception when it encounters a divide fault. A divide fault occurs if division by zero is attempted or if the result of the operation does not fit in the destination operand. 

02: NMI interrupt 

Interrupt 2 is reserved for the hardware Non-Maskable-Interrupt condition. No exceptions trap through interrupt 2. 

04: Overflow trap 

The overflow trap occurs after an INTO instruction has executed and the 0F bit is set to 1. 

05: Bounds Check Fault 

The BOUND instruction compares the array index with an upper and lower bound. If the index is out of range, then the processor traps to interrupt 05. 

06: Invalid Opcode fault 

This error is returned if any one of the following conditions are true: 

   - The processor tries to decode a bit pattern that does not correspond
     to any legal computer instruction

   - The processor attempts to execute an instruction that contains invalid
     operands

   - The processor attempts to execute a protected-mode instruction while
     running in virtual 8086 mode.

   - The processor tries to execute a LOCK prefix with an instruction that
     cannot be locked.
07: Coprocessor not available fault 

This error occurs if the computer does not have a math coprocessor and the EM bit of register CR0 is set indicating that Numeric Data Processor emulation is being used. Each time a floating point operation is executed, an interrupt 07 occurs. 

This error also occurs when a math coprocessor is used and a task switch is executed. Interrupt 07 tells the processor that the current state of the coprocessor needs to be saved so that it can be used by another task. 

08: Double Fault 

Processing an exception sometimes triggers a second exception. In the event that this occurs, the processor will issue a interrupt 08 for a double fault. 

09: Coprocessor Segment Overrun 

This error occurs when a floating point instruction causes a memory access that runs beyond the end of the segment. If the starting address of the floating point operand is outside the segment, then a General Protection Fault occurs (interrupt 0D). 

10 (0Ah): Invalid Task State Segment Fault 

Because the Task State Segment contains a number of descriptors, any number of conditions may cause exception 0A. Typically, the processor can gather enough information from the Task State Segment to issue another fault pointing to the actual problem. See "Microsoft's Programming the 80386/80486 Guide" for more information. 

11 (0Bh): Not Present Fault 

The Not present interrupt allows the operating system to implement virtual memory through the segmentation mechanism. When a segment is marked as "not present", the segment is swapped out to disk. The interrupt 0B fault is triggered when an application needs access to the segment. 

12 (0Ch): Stack Fault 

A Stack Fault occurs with error code 0 if an instruction refers to memory beyond the limit of the stack segment. If the operating system supports expand-down segments, increasing the size of the stack should alleviate the problem. Loading the Stack Segment with invalid descriptors will result in a general protection fault. 

13 (0Dh): General Protection Fault 

Any condition which is not covered by any of the other processor exceptions will result in a general protection fault. The exception indicates that this program has been corrupted in memory usually resulting in immediate termination of the application. 

14 (0Eh): Page Fault 

The Page Fault interrupt allows the operating system to implement virtual memory on a demand-paged basis. An interrupt 14 usually is issued whenever an access to a page directory entry or page table with the present bit set to 0 (Not present) occurs. The operating system makes the page present (usually retrieves the page from virtual memory) and re-issues the faulting instruction, which then can access the segment. A page fault also occurs when a paging protection rule is violated (when the retrieve fails, or data retrieved is invalid, or the code that issued the fault broke the protection rule for the processor). In these cases the operating system takes over for the appropriate action. 

16 (10h): Coprocessor error Fault 

This interrupt occurs when an unmasked floating-point exception has been signaled a previous instruction. (Because the 80386 does not have access to the Floating Point Unit, it checks the ERROR\ pin to test for this condition). This is also triggered by a WAIT instruction if the Emulate Math Coprocessor bit at CR0 is set. 

17 (11h): Alignment Check Fault 

This interrupt is only used on the 80486 CPUs. An interrupt 17 is issued when code executing at ring privilege 3 attempts to access a word operand that is not on an even-address boundary, a double-word operand that is not divisible by four, or a long real or temp real whose address is not divisible by eight. Alignment checking is disabled when the CPU is first powered up and is only enabled in protected mode. 

REFERENCES 

For additional information, please see the following article(s) in the Microsoft Knowledge Base: 

   ARTICLE-ID: Q138788
   TITLE     : Random Fatal Exception Errors While Running Windows 95

   ARTICLE-ID: Q136337
   TITLE     : Troubleshooting Windows 95 Startup Problems

   ARTICLE-ID: Q134503
   TITLE     : Parity Error Messages May Indicate Bad Memory
Microsoft's 80386/80486 Programming Guide, Second Edition 

The Indispensable PC Hardware Book, Second edition 

Microsoft Press Computer Dictionary, Second Edition