Causes of System Integrity Errors in Windows 3.1

Last reviewed: November 23, 1994
Article ID: Q82665
The information in this article applies to:
  • Microsoft Windows operating system versions 3.0, 3.0a, 3.1, 3.11
  • Microsoft Windows for Workgroups versions 3.1, 3.11

SUMMARY

System Integrity errors are caused by unexpected CPU faults. The following information provides a general overview of CPU fault causes. For more information, refer to your Intel 80386 CPU manual or "The 80386 Book," by Ross P. Nelson (published by Microsoft Press).

MORE INFORMATION

The following are some of the more common CPU faults:

  • Invalid opcode
  • Stack exception
  • General protection (GP) fault
  • Page fault

NOTE: Not all occurrences of these faults are invalid. Valid, expected faults occur from all of the above except stack exceptions.

Invalid Opcode

An invalid opcode fault occurs when an instruction that is not legal is executed. The most frequent cause of this invalid fault is executing a value that is not an instruction.

Stack Exception

A stack exception fault occurs when an invalid stack operation is attempted. The most frequent cause of this invalid fault is trying to PUSH or POP a WORD or DWORD at an address that causes the operation to span across SP value 00000h or 0FFFFh. For example, attempting to POP a WORD with SP=0FFFFh, is attempting to read one byte of the WORD at offset 0FFFFh and the other byte of the word at offset 00000h. The CPU does not support this operation.

General Protection (GP) Fault

Many things can cause a GP fault. As the name implies, this fault means something was attempted that is not allowed because it would violate the protection features built into the CPU. As with invalid opcode faults, a typical cause of this invalid fault is executing garbage, but unlike the invalid opcode, the instruction is legal; however, the particular form of the instruction is illegal at the time.

Page Fault

A page fault occurs when an access is made to memory that is not currently mapped, (not currently available). The most frequent causes of this invalid fault are wild pointer accesses to memory that is not legal to look at in the current time frame. This is often a manifestation of "protection." For example, a device wants to protect a piece of memory, always, or at the current time, so that only that particular device can use it. It makes the memory unavailable by using the paging features of the CPU so that any application that tries to read or write to this memory will be stopped by an invalid page fault. This helps prevent the wild pointer in the application from damaging critical information in memory.


KBCategory: kbenv
KBSubcategory: win30 win31 wfw wfwg gpf winmem
Additional reference words: 3.00 3.00a 3.10 crash drwatson


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: November 23, 1994
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.