How to diagnose and correct Fatal Exception, Invalid Page Fault, and General Protection Fault errors in Windows 95/98
Situation:
Your computer displays Fatal Exception, Invalid Page Fault, General Protection Fault, or other memory-related error messages. You want find the cause of the problem and correct it.
Solution:
CAUTION:
This document describes some common symptoms of memory-related errors and methods used to diagnose and correct them. This document presumes a fairly high level of familiarity with Windows 95/98. Read this document completely before you begin making changes. If you are unsure of any section or are not confident that you can do, or, more importantly, undo any of these changes, do not use this document.
Common symptoms and their cause
Problems related to memory are revealed in various ways. The following list describes some of the more common symptoms and their causes:
X caused a General Protection Fault in module Y
Module X trespassed in the memory space allocated to module Y. This does not necessarily mean that either X or Y was the culprit. A third module, not referenced may have been involved. If it is possible, you should:
- Save all data.
- Close all applications.
- Shut down Windows.
- Turn the power to the computer off.
- Wait a few seconds and turn the computer on.
Unable to load X
This is typically caused by the X file being damaged. Try replacing the file by either copying it from another source, such as another computer, or expanding the file from the original installation medium. If this does not solve the problem, then you likely have a memory problem.
Unable to find X
This is one of the most common and misleading memory-related messages. The message indicates that the X file is not where it is expected to be according to the Path statement, the registry, or an .ini file. If the file is undamaged, correctly pathed, and exists in the correct location, then the cause could be insufficient file handles or a corrupted memory manager.
The mouse cursor constantly indicates the system is busy
This indicates that a program has not released control of the processor for use by Windows or other applications. Pressing Ctrl+Alt+Del one time will open the Close Program dialog box and may indicate which program is not responding. Select the offending program, and then click End Task.
Memory corruption or resource depletion are the most frequent causes of this problem, although interrupt and IRQ misconfiguration are also factors.
Fatal Exception 0D
This is an exception trapped by the processor (not the operating system) that reports a General Protection Fault. This error generates a blue screen with white text advising that your session is about to be terminated. This error is usually associated with device drivers. There is usually no recovery from this error.
In the unlikely event that you can get back to your desktop, you should:
- Save all data.
- Close all applications.
- Shut down Windows.
- Turn the power to the computer off.
- Wait a few seconds and turn the computer on.
Fatal Exception 0E
This is an exception trapped by the processor (not the operating system) that reports a Page Fault. This error generates a blue screen with white text advising that your session is about to be terminated. This error is usually associated with a low-level device driver that generates hardware interrupts (video, communications, printer, scanner, or other peripherals using the I/O system). There is usually no recovery from this error. The Device Manager will often indicate a conflict for the offending device.
In the unlikely event that you can get back to your desktop, you should:
- Save all data.
- Close all applications.
- Shut down Windows.
- Turn the power to the computer off.
- Wait a few seconds and turn the computer on.
Fatal Exception 0E can also be the result of corruption in the swap file or virtual memory manager (VMM) tables, or a swap file that is too small. Creating a larger permanent swap file will often solve this problem
Segment load failure
This usually indicates that the memory manager cannot load part of a requested program or .dll file. (Occasionally, it will indicate that the module is corrupted, rather than the memory manager.) The cause may be one of the following:
- Lack of file handles
- Lack of memory
- Fragmented memory allocations
- Corrupted management table or pointers
How to determine the cause of the memory problem
The process of diagnosing a memory-related problem begins by simplifying the memory environment. You do this by establishing a baseline configuration in which the operating system and the application experiencing the problem run successfully. Gradually increase the complexity of the environment, by installing programs and enabling program options, until the system fails. At that point, you should have an idea of which program or program option caused the failure.
The following sections contain specific steps you can follow to help isolate and correct memory problems.
Windows 95/98 troubleshooting path:
The following steps will help you resolve many memory and hardware related problems:
- Examine System properties.
- Examine the Device Manager.
- Examine the [386enh] section of the System.ini file.
- Examine the Task list and run the command Mem /c /p.
- Determine the path of the Windows temp file.
System Properties
- Open System Properties.
- Check the General for the Windows version.
- Check the Performance tab for:
- System Resources free.
- Amount of RAM.
- Status of File System and Virtual Memory.
32-bit file system and VM is normal. DOS Compatibility Mode is not normal. Most 32-bit disk utilities may exhibit anomalous behavior if running under DOS compatibility mode. Running in this mode may indicate:
- A virus
- A real mode disk-related driver.
- A device conflict or configuration issue.
- A failure of Windows 95/98 to properly initialize the system for 32-bit operation.
Device Manager
Check for device conflicts. You must resolve conflicts before addressing functionality issues. If you are supporting a 16-bit program, this is not your job. If you are supporting a 32-bit application, this may or may not be your job.
System.ini
Check the
[386enh] section for Device= statements that do
not begin with an asterisk. These are devices that are not a part of Windows 95/98 (for example,
Device=softram.386) and are probably installed by Windows 3.x applications.
Task list and the mem command
Check the TaskList for running 32-bit applications. Write these applications down.
Open up a DOS window, and type:
mem /c /p
This command will display the largest executable program size and a list of programs loaded in DOS memory. Write it all down. Those programs carry across all VMs.
Temp folder
While you are still in the DOS window, type
set and then press Enter to determine the Path and the location of the temporary folder.
Quick resolution
If the Mem command or System.ini yield any non-Windows 95/98 components, then modify the boot files to setup a clean environment. Use Sysedit.exe under Windows 95 and Msconfig under Windows 98. Make the following changes:
Autoexec.bat
Config.sys
- Ensure that HIMEM.SYS and EMM386.EXE NOEMS load from the Windows 95/98 folder.
- Remark out any other devices.
Win.ini
- Comment out the Run= and Load= lines.
System.ini
- Comment out all Device= statements that do not begin with an asterisk.
Detailed resolution
If the operating system is not responsive to a quick resolution, follow these steps for a more detailed resolution.
- Verify your application is in the path if it needs to be.
- Ensure that the Temp variable is assigned to an existing folder. If not, assign it in Autoexec.bat.
- Delete all *.tmp files from all TEMP and TMP folders.
- Run Norton Disk Doctor (Ndd /complete) or ScanDisk (Scandisk /surface).
- Run SpeedDisk or Defrag.
- Set up a permanent swap file based on the following parameters:
* 40-60 MB for an 8 MB RAM system
* 32-60 MB for 16 MB RAM.
If the swap file is already permanent, restart to a Command Prompt, delete the swap file (WIN386.SWP), restart in Safe Mode with no swap file and no startup folder, set up a new swap file.
- Restart with an F8 boot to the Windows Startup menu, and select Step-by-Step Confirmation. Respond as follows:
- YES to "Process the system Registry."
- NO to "Create a startup log file."
- NO to "Process your startup device drivers" (Config.sys).
- YES to everything else in Config.sys.
- YES to "autoexec.bat."
- YES to all PATH and SET statements.
- YES to "load all windows drivers".
- NO to everything else.
NOTE: The above steps provide a better environment in nearly all cases, and will rarely have an adverse effect on the client's configuration. The steps below may be temporary, intended for diagnostic purposes only, and will need to be undone to restore the computer to its previous configuration. However, if you need to go this far, you will not usually restore the computer's configuration.
A more drastic alternative to the step-by-step startup is to rename Config.sys, Autoexec.bat and Win.ini.
- If interrupt or communications issues are potentially involved, check that System.ini [boot] comm.drv=comm.drv.
- Empty the StartUp folder.
- Set Graphics Hardware Acceleration to None.
- Change video to VGA mode.
- Restart to Safe Mode then to normal mode to force reconstruction of VMM32.
- Verify the task list is empty except for Explorer. If the problem remains, do one of the following in System.cb:
- Add "mouse.drv=mouse.drv" to [boot]
- Add "mouse=*vmouse, msmouse.vxd" to [386Enh]
- Rename System.ini.
- Copy System.cb to System.ini.
- If you do not use System.cb, then in the System.ini [386Enh] section, remark out all DEVICE= statements that do not equate to asterisk (*) something. Windows 95/98 drivers are installed in the Registry, not the INI files.
A Word on Windows 95/98 Plug'n'Play
Inappropriate hardware registration can cause Fatal Exceptions 0D and 0E and sometimes conventional page faults and GPFs. PnP registration is very sensitive to timing. One characteristic of PnP problems is their inconsistency. A particular session may be error-free, another plagued with errors. A cold boot is more likely to result in a broken session than a warm boot. In these cases the initialization and registration timing is marginal, sometimes succeeding and sometimes failing.
Hardware configuration errors are more likely to consistently cause errors. For example, video card/driver configuration problems will be more consistent than scanner registration problems. To further complicate matters, hardware misconfiguration can make the Windows 95/98 PnP even more problematic, creating consistent errors occasionally punctuated by exceptions.
Document ID: 1996112592021
Last Modified: 06/03/2005
Date Created: 11/25/1996
Operating System(s): Windows 95, Windows 98
Product(s): TS_GEN