Link to home
Start Free TrialLog in
Avatar of circa
circa

asked on

Invalid page faults & fatal exceptions- why?

All too frequently I'm stopped dead in my tracks by invalid page faults, often (but not always) related to module KERNEL32.dll. In more extreme instances, I get the dreaded Fatal Exception blue screen & I must reboot. Then, sometimes when I reboot, I get a Windows Protection Error (cannot initialize device CONFIGMG). So then I go back & forth to safe mode, which sometimes gets me back to normal mode, & other times I just turn the system off & go get some coffee until everything cools off & I can usually get going again.
I notice a considerable number of other users get these problems, but have found precious little useful information that explains what causes these errors & how they can be avoided. Can anyone enlighten me? Are these software problems? Device conflicts or other hardware problems? Lets see, I'm using a Supermicro HX motherboard w/ 64 mb EDO, Windows 95, Future Domain PCI SCSI controller, 2 recent Seagate HDs (set as primary master & secondary master) & one SCSI drive, NEC SCSI cd-rom, SCSI zip drive, sound card, and #9 imagine 128 video. I've reformatted the primary master drive, pulled  all the peripherals & reinstalled them after reinstalling Win95, set my mouse & video to standard serial & standard VGA (to try to isolate a device problem), ran BurnIn to try to identify hardware or memory problems (it didn't find any). I'll pay all my points for an answer.
Avatar of smeebud
smeebud

Well here it comes circa,
---------
1.Please see:http://www.microsoft.com/support/tshoot/w95startup.HTM
-----
2. DEVICE MANAGER STUFF:
If there is a problem with a device, it is listed in
the hardware tree list under Computer. The
problem device has a symbol indicating the type of problem:

A black exclamation point (!) on a yellow field indicates
the device is in a problem state. A
device in a problem state can be functioning.
A problem code explaining the problem is
displayed for the device.

A red "X" indicates a disabled device. A disabled
device is a device that is physically present
in the system, consuming resources, but does not
have a protected-mode driver loaded.

A blue "i" on a white field on a device resource in
Computer properties indicates that Use
Automatic Settings is not selected for the device and
that the resource was manually
selected. It does not indicate a problem or disabled state.

NOTE: Some sound cards and video adapters do not report all
the resources they are using to Windows 95. This can
cause Device Manager to show only one device in conflict, or no
conflicts at all. This can be verified by disabling the
sound card, or using the standard VGA
video driver too see if the conflict is resolved.
(This is a known problem with S3 video cards
and 16-bit Sound Blaster sound cards, or those sound cards using Sound Blaster
emulation
for Sound Blaster compatibility.)
When you select a specific device in Device Manager,
then click the Properties button, you
see a property sheet. The property sheet has a General tab.

NOTE: Some devices may have other tabs besides the General tab.
Not all property sheets
have the same tabs; some devices may have a Resource tab,
Driver tab, and Settings tab, or some combination of these.

At the top of the property sheet, there is a description
of the device. When you click the
Resource tab, the window in the middle of the tab indicates
which resource types are available for the selected device.

The scroll box at the bottom of the contains a Conflicting
Device list. This list indicates a conflict with an error code.
Note the Use Automatic Settings check box. If Windows 95
successfully detects a device,
this check box is selected and the device should function
correctly. However, if the resource
settings are based on Basic Configuration <n> (where <n> is
any number from 0 to 9), it may
be necessary to change the configuration by selecting a
different basic configuration from the
list. If the particular configuration you want for the
device is not listed as a basic configuration,
it may be possible to click the Change Settings button to
manually adjust the resourcevalues.

For example, to edit the Input/Output Range setting, use these steps:
1. Click the Use Automatic Settings check box to clear it.
2. Click the Change Setting button.
3. Click the appropriate I/O range for the device.
-------
3. HOW TO FIX DUPLICATE DEVICE MANAGER ENTRIES:
1.When windows detects two devices (usually this happens with pnp) you should delete all the devices of the same type detected. Then reboot windows, and windows will detect the device. Install the drivers, and you solved the problem. If the pnp system will detect twice a device, simply ignore the install request, and get the lastest driver for it. This is important. Windows will detect all the pnp unknown hardware: to avoid problems ensure to have all the drivers needed for your PC.
2. I did a search of my registry with regedit. I did the first search for my modem using the name that showed for my Supra in Device Manager to be sure I found all entries for it in the registry. I then searched for "Supra" in the registry and deleted all references to the modem. I mean I deleted the entire key,  not just the entry.
Next I did the same thing for my duplicate com ports. Note that only com 3 and com 4 were showing up as duplicates. I once again deleted every entry.
When I re booted Win95, the com ports were detected and installed. I booted again and the Supra was installed. I haven't had the problem since.
    The first few times I tried this I deleted only one instance of each duplicate. When booting, the duplicates would come back again. Frustrating.
My duplicate entry problem was initially caused by the installation of a new Soundblaster. During the install of the Soundblaster Win95 picked up the extra com ports and modem.
----------
If this doesn't help, get back and we'll look into the registry.

This answer I've proposed before to someone else, but could be helpful to you also, even if you said you ran BurnIn:

In 99% of the cases I've met before, the problem is a fault module of RAM. Unfortunately, even some usual test RAM programs does not detect a fault in RAM (for example Norton Diagnostics or older versions of Checkit). A better test for RAM is RAMEXAM in Checkit 4.0. Boot from a DOS floppy without any autoexec or config, get the most sofisticated RAM test you can find, run it also from floppy, and probably you will get an error in test (beware, the test could be 2-4 hours!).
Also, slowing down write access time (if there is a BIOS option) could solve the problem, with some performance costs.
A deeper problem. and much more difficult to localize is a faulty cache RAM. There are chances that a RAM test program not to identify cache problems because it does not use more than the first 64k cache in test. Fortunately, there are some cache tests programs you could find around.
My opinion is that you still have a hardware problem, because there is no logical connection between the different errors described (sometimes works, sometimes not).
Let me know if you double-checked these tests.
Avatar of circa

ASKER

Tried Smeebud's solution, & am still getting the same problems. I rather doubt that I have a registry problem, since I reformatted & reinstalled all my devices, but I'm open to giving it a try. More fundamentally, I would like to better understand what causes these problems. Its like Eddie Albert's old TV spot for his poverty charity, which goes something like: Give a man a fish & he can eat once, but teach a man to fish & he can go fishing. Well, maybe that's not verbatim, but you get the message...
What for a Win95 are you using A ,B(SR2), look at the Control Panel -> System -> General -> System: 4.00.XXX.A or B .
If you have the new Win95 (B) then try a older version, the
Win95 (Software Release 2) causes strange problems!
Maybe that one of your hardware-components/drivers dosn't work
under SR2.

Avatar of circa

ASKER

Nope. Using earlier release...

But here's another wierd thing that I'm quite sure is related. Sometimes (often) running install causes exceptions & ipf's as well.
try your machine without SCSI and if You can with Standard VGA card (not driver-replace card).

if don't work then realy You have bad RAM !!!.
if no then tell us well be working ...
Avatar of circa

ASKER

Is there a good reliable public domain RAM testing app? Or should I think about taking chips to a shop for testing?
This is a far better way of testing ram than Ram Checkers.
See: http://www.microsoft.com/kb/articles/q134/5/03.htm
It says it's about parity errors, but there is a very good method
(better than a ram checker) for testing your ram. And with your problems, I would most defintly check your RAM.
--------
Defective memory chips may not be detected by memory
checking tools. Some memory checking
programs are not adequate tests because they do not
test RAM in the same way that Windows
uses RAM. Most memory checkers use read/write cycles w
hen scanning memory. Since Windows
is executing code from memory, it uses execute cycles.
Execute cycles are different from read/write
cycles and are more vulnerable to parity errors.
It is possible for memory checking programs to find
parity errors if the memory is extremely faulty.


I'm sure there is no good RAM test program in the public domain, and after your comments, it's for sure it's a faulty RAM or cache module!
The simplest, quickest and most painless way is to change your modules, bank-by-bank (probably two by two) to identify the defective pair. Of course, 16 MB or 32 MB will be enough to test, so change the modules between them, reducing for a limited time the amount of memory in your machine, and work with it. Win95 itself is a perfect RAM test program!
Or, if you could get CheckIt 4.0, only RAMEXAM is a RAM test I could rely on it.
Good luck !

The ram check I mentioned works. I've found on 3 occasions bad ram that way.
Costin, I've been looking for a new Checkit for a while.
Where do you get it?
Avatar of circa

ASKER

RAMDRIVE says its only good for 16 megs, & I'm using two 32mb simms. Am I dense, or will this be a problem in isolating which ram module is bad (assuming thats the case). The MS Knowledge Base is not very clear about this. And oh yeah, where to you get CheckIt 4.0?
Gimme your e-mail address circa and I'll send RAMEXAM to you.
Ramexam is only a separate piece in CheckIt 4.0 kit.
Yes, it's almost impossible to detect which memory module is defective by rotating your simms, I did not predict that you have 2x32 MB.
But on the other hand, is easyer to detect it, if you could get another module of 32 MB (preferably the same type), and to test with one by one.
ALso, if you could change both modules simultaneously by borrowing a pair, just to have an ideea if this is the problem, would be a solution.
Oh, and beware, about a year ago, I had the same problem on one of my systems. I've replaced the RAM entirely and the troubles started again. After a week of digging in software, Ive started again with RAM tests, this time with Ramexam (I've buyied it at that time). Ive found 2 (two!) defective simms, one in the first lot, one in the second.!!
So...
For both circa and smeebud (hi smeebud :) !)- if you want to contact me directly: cdrizescu@hotmail.com

Did you try that ram checking method as i earlier proposed.
You cand isolate your ram with that method any way you want, 4mg at a time, then the next four and so on.
circa, I'd still like to know where to get the new checkit. Mine date back to 1993. In computer land thats light years behind.
Avatar of circa

ASKER

Smeebud- See my comment above about RAMDRIVE please. It doesn't seem like it would work for me. And does anyone know what actually causes these problems?! I repeatedly read posts about IPFs & fatal exceptions, but so little knowledge about them seems readily available.
ASKER CERTIFIED SOLUTION
Avatar of smeebud
smeebud

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
What Are Windows 95 Fatal Exception Errors:
-----
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
I've sent the tests through e-mail. Let me know if it was of any help to you.

Avatar of circa

ASKER

Well, I broke out on a new track & installed Windows NT Workstation 4.0 as dual-boot and guess what: my system runs essentially perfectly under NT (but still just a little flaky under Win95, & usually when running America Online). The weird thing is that I don't necessarily believe that was the solution. What I'm really wondering is if the higher summer temps caused my case to run hotter, wreaking havoc on internal components. It usually happened that after an hour or more of use I would start getting my problems, & I had better luck in the morning with running an extended session (no air conditioning). It may just be coincidence that we are now getting some cooler temps along with rainy weather the past couple of days (I live in Flagstaff, Ariz), and my system seems to have settled down.  I have read that RAM & other components may be affected by this, & I know my SCSI HD throws off a lot of heat on its own, which I previously dealt with by running dual fans in my case. I'm now considering an external enclosure for that drive.

Aside from all this, I ran the RAMexam & cache checking utilities that Costin sent me, & neither discovered any errors. Hence, I haven't actually tried Smeebud's solution yet, & I'm wondering if his remedy will work using two 32mb simms (he refers to the 1st 16mb of ram, & then works downward). The problem now is that I've only had a couple of days of stable system performance & I wouldn't venture to predict that my problems have necessarily gone away. Unfortunately, I won't be able to investigate this further right now because I'm working out of town for 8 days starting tomorrow. For the time being, I'm afraid I'll have to reject Smeebud's answer, although both Smeebud & Costin have been very helpful. I do intend to award my points, but I don't want to do it hastily until I'm sure things are permanently smoothed out.
circa,
yes, you can still isolate the 32mg ram with that method.
Here's a revised version of the process.
===============
Bad memory chips can also cause the following situations:
1. Fatal Exception errors.
2. Himem.sys load failures in normal or Safe mode.
3. Random lockups.
4. The computer may stop responding (hang) as soon as you turn it on.
Remove or replace memory chips in the computer to see if the problem is resolved.
Try limiting the amount of memory that Windows 95 uses. To do so, follow these steps:
1. Use any text editor (such as Notepad) to edit the System.ini file.
2. Add the following line in the [386Enh] section of the file:
MaxPhysPage=< nnn > where < nnn > determines the amount of memory you want Win95 to use.
To limit Windows 95 to the first 4 MB of memory, add the following line: MaxPhysPage=3FF
To limit Windows 95 to the first 8 MB of memory, add the following line: MaxPhysPage=7FF
To limit Windows 95 to the first 16 MB of memory, add the following line: MaxPhysPage=FFF
3. Save and then close the System.ini file.
4. Restart your computer. Check how it runs. If OK, then test the next, ie; 8MG
The heat inside your case could be the trouble of course. If you could isolate the problem (heat or anything else) I'm also interested what was there.
Succces!

circa,
Heat could definitely be a problem. I'm sending my ( tune you system for performance method),. This has fixed many problems for a lot of people. As far as "promlems not occurring until an hour or two, it could simple be that your ram and swapfile are not working togeather as they should. This will address that:
----------------------------------------------
SYSTEM TUNE-UP

Many users have complained about Windows95 seizing up for up to a
minute because of random, pointless disk activity. This is due to the
way that Windows95 is set to handle disk caching and virtual memory.
Although Windows95 instructs you to "let Windows handle disk cache
settings" for best results, this obviously does not yield the best
results. Here's how to eliminate the random disk activity and improve
system performance:
Part One: Virtual Memory
[*]Right click on My Computer, and select Properties.
[*]Click the Performance tab, and then click Virtual Memory
[*]Choose Let me specify my own virtual memory settings.
[*]If you want to choose a different drive for your swapfile, run
Disk Defragmenter first.
[*]Specify the same value for the Minimum size and the Maximum
size, so Windows95 won't spend so much time resizing the file. A
good size is roughly 2 1/2 times the amount of installed RAM
(i.e. create a 40MB swapfile if you have 16MB of RAM).
[*]Press OK, and then OK again, and confirm that you want to
restart your computer.
[*]Note: if you have Norton Utilities, you'll be able to optimize
the swapfile. If you want to take the time, you can optimize it
manually by exiting windows, deleting the swapfile, defragmenting
the drive, and restarting. Once you've set the swapfile size to
be constant, you won't have to worry about a defragmented (broken
up) swapfile again.
Part Two: Virtual Cache
[*]Open SYSTEM.INI for editing.
[*]Add the following two lines to the [vcache] section (add the
section if it's not there):
MinFileCache=4096
MaxFileCache=4096
---------------I have 32mg so i set mine like this:
[vcache]
MinFileCache=8192
MaxFileCache=8192
ChunkSize=64
-----------------
Start by double-clicking on the Control Panel's System icon, then
clicking on the Performance tab. Next, click on the File System
button. You'll see two settings in the resulting Hard Disk dialog box:
The setting labeled Typical Role of This Machine determines how
much space is set aside in main memory to handle path and filename
caching. The default Desktop Computer choice allocates space for a
paltry 32 paths and 677 filenames, whereas the Network Server
choice bumps those settings up to 64 paths and 2,729 filenames.
Even if your computer is used strictly for desktop applications,
change the Typical Role box to Network Server. Unfortunately, if
you're using the original release of Windows 95--not the recently
updated version titled OEM Service Release 2 (OSR2)--you'll have
to take an additional step to correct a bug in the Windows 95
Registry. Use the Windows 95 Registry Editor (see "Rule the
Windows Registry" for an introduction to the Registry Editor) and
change the value of HKEY_LOCAL_MACHINE\SOFTWARE\
Microsoft\Windows\CurrentVersion\
FSTemplates\Server\NameCache to a9 0a 00 00, and \PathCache
to 40 00 00 00.

The Read-Ahead Optimization slider establishes how much additional data Windows 95 should fetch every time you retrieve data from your hard disk. Read-ahead buffering improves performance by reducing the number of times your machine has to go out to the relatively slow hard disk to get data. Set the slider all the way to the right, giving Windows 64K of read-ahead buffering.

Next, click on the CD-ROM tab in the File System
Properties box. The Supplemental Cache Size slider adjusts the room Windows 95 sets aside for read-ahead buffering of your CD. The first three steps on the slider add 64K or 128K each to the cache; the final three steps add 256K apiece. The box labeled Optimize Access Pattern For doesn't control access speed to your CD; the setting's real function is to reserve even more buffer space for caching CD reads. The
Single-Speed Drives and No Read-Ahead settings don't increase the buffer size. But
the double-, triple-, and quad-speed settings add 50K, 100K, and 150K of cache,
respectively.

If you use your CD drive frequently, move the Supplemental Cache Size slider to
Large, and specify that you have a Quad Speed or Higher CD, even if you don't. The
combination will set aside about 1.2MB for CD caching, and ensure that your CD will
run as fast as possible.

---------------
[*]These values, in kilobytes, regulate the size of the VChache,
so you can stop it from filling up all available RAM and paging
all loaded apps to disk.


Here are several little modifications you can make to improve
Windows95 performance:

Speed up system restart:
[*]Add BootDelay=0 to the [Options] section of C:\MSDOS.SYS
Speed up the Start Menu:
[*]In the Registry Editor, go to HKEY_CURRENT_USER\ Control
Panel\ desktop, and add a string value named MenuShowDelay, with
a value specifying the number of miliseconds (400 is default,
smaller numbers are faster).