Windows98 Problems
What to Look for.

Windows98 has been plagued with problems since it came out in August of 1998. Unfortunately, many of them are caused by the software that was not necessarily written for Windows98 but for 95. Other problems are caused by bad software drivers for devices like video cards, network cards, and sound cards.

Tools and Tips for You

Removing Internet Explorer

This is one area where lots of problems are found and solved. Internet Explorer can get quite corrupted and when it does, you can quickly see what is wrong. Here is a web site that I found that shows what you need to do, what files you can delete, Registry entries you can remove, and so forth. And he makes available three free programs that automate a lot of this for you. Go to www.98lite.net for details.

Floppy Drive Access Problem

Many times when running Windows98 (or 95), it seems that something keeps accessing the floppy drive for no real reason. The tip here is to boot Windows to DOS and rename the floppy driver Drvwq117.vxd found in Windows\System\IOsubsys\ to something else. Sometimes this file is installed by software when it isn't needed. For another take on this topic, take a look at tech note ID 187041 at Veritas' Web site which describes how to eliminate unnecessary floppy accesses. Go to seer.support.veritas.com/tnotes/dtawin95/187041.htm. If you're not using a tape drive that attaches to a floppy drive connector, you probably don't need Drvwq117.vxd.

The system displays a Missing Himem.Sys, Unable to Control A20 Line, and/or XMS Manager Not Installed errors after warm-booting the computer.

(Thanks to Dell for this one)

Norton Anti-virus has been previously loaded into high memory and may be interfering with the warm boot process. To prevent the error:
Shut down the system (turn the unit off).
Turn the machine on and boot into Microsoft® Windows® 95/98.
When Windows has completed booting, go to START | RUN and type:

SYSEDIT

then click on "OK"

Select the window "C:\Autoexec.bat" and find the line refers to the Norton Antivirus program. Set the cursor (the flashing edit bar) to the beginning of the line that calls the anti-virus program and hit [Enter]. Then use the [up arrow] to go up to the empty line that has been created and type:

SET DOS16M=2

Go to FILE | SAVE on the menu bar and save the changes.
Close the System Configuration Editor and restart the computer.
When the computer is turned on again, the new configuration will prevent any more errors on a warm boot.

What Are Windows 95/98 Fatal Exception Errors

(Thanks to Microsoft for this one)

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 non-recoverable 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.

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.

Return to Sansoft LLC Home Page


Email Robert Sanborn at: 

Copyright 2001 Sanborn Software Systems LLC
This Page Last Updated: January 24, 2001.