An Invalid Page Fault Occurs in Kernel32.dll Because of an Uninitialized Critical Section (319508)



The information in this article applies to:

  • Microsoft Windows Millennium Edition
  • Microsoft Windows 98 Second Edition
  • Microsoft Windows 98
  • Microsoft Windows 95 OEM Service Release 1
  • Microsoft Windows 95 OEM Service Release 2
  • Microsoft Windows 95 OEM Service Release 2.1
  • Microsoft Windows 95 OEM Service Release 2.5
  • Microsoft Windows 95

This article was previously published under Q319508

SYMPTOMS

When you run a program, you may receive an error message that is similar to one of the following error messages:
  • Windows 95, Windows 95 OSR, Windows 98, Windows 98 Second Edition
    This program has performed an illegal operation and will be shut down.

    If the problem persists, contact the program vendor.

    Details:

    Program_name caused an invalid page fault in module KERNEL32.DLL at Fault address.
  • Windows Millennium Edition (Me)
    Program_name has caused an error in KERNEL32.DLL. Program_name will now close.

    If you continue experiencing problems, try restarting your computer.
Notes:
  • Program_name refers to the title of the program that is improperly using the uninitialized critical section.
  • For specific information about the Fault address values, see the "Fault Addresses" topic in the "More Information" section of this article.
  • Windows Me does not include a Details option in the error message dialog box. See the "Windows Me Fault Logging" topic in the "More Information" section of this article.

CAUSE

The error message occurs if a program or driver calls the Win32 EnterCriticalSection function with the address of an uninitialized CRITICAL_SECTION object. In this situation, Windows is behaving as it is designed to. The software that is listed as the cause is responsible for the error. See the "Critical Section Description" topic in the "More Information" section of this article.

STATUS

This behavior is by design.

MORE INFORMATION

Fault Addresses

The following table documents the fault addresses that are displayed for the indicated versions of Windows (without any Kernel32.dll updates), and with the Kernel32.dll updates that are documented in the indicated Microsoft Knowledge Base articles installed:

Kernel32
version    Fault address  Windows version                         Article
-------------------------------------------------------------------------
4.90.3000  0177:BFF6BB07  Me                 4.90.3000            -
4.10.2224  0167:BFF7B9A6  98 Second Edition  4.10.2222A           Q272137
4.10.2223  0167:BFF7B9A6  98 Second Edition  4.10.2222A           Q262516
4.10.2222  0167:BFF7B9A6  98 Second Edition  4.10.2222A           -
4.10.2000  015F:BFF7B997  98                 4.10.1998            Q222131
4.10.1999  015F:BFF7B997  98                 4.10.1998            Q272137
4.10.1998  015F:BFF7B997  98                 4.10.1998            -
4.03.1216  0157:BFF79F97  95                 4.00.950B or C       Q175086
4.03.1212  0157:BFF79FA4  95                 4.00.950B (OSR 2.1)  Note 1
4.00.1112  0137:BFF99C00  95                 4.00.950B (OSR 2)    Q175086
4.00.1111  0137:BFF9A3C0  95                 4.00.950B (OSR 2)    -
4.00.952   0137:BFF998AC  95                 4.00.950A            Q175086
4.00.951   0137:BFF9A08C  95                 4.00.950A            Q148336
4.00.950   0137:BFF9A07C  95                 4.00.950A            -
					

Note 1: Windows 95 OSR2 with the Universal Serial Bus (USB) Supplement installed has the same Kernel32.dll version as OSR 2.1. See the "References" section in this article for links to the indicated Microsoft Knowledge Base articles.

Windows Me Fault Logging

To verify the fault address, open the fault log (the Faultlog.txt file is located in the Windows folder):
  1. Click Start, point to Programs, point to Accessories, point to System Tools, and then click System Information.
  2. On the Tools menu, click Fault Log. The Faultlog.txt file is opened, with the most recent fault information at the end of the file.

Critical Section Description

The threads of a single process can use a critical section object for mutual-exclusion synchronization. The process is responsible for allocating the memory that is used by a critical section object, which it can do by declaring a variable of type CRITICAL_SECTION. Before using a critical section, some thread of the process must call the InitializeCriticalSection or InitializeCriticalSectionAndSpinCount function to initialize the object.

REFERENCES

General

158238 How to Determine the Version of Windows 95/98/Me in Use

253756 Availability of Universal Serial Bus Support in Windows 95

Microsoft Windows 95

148336 Memory Leak in Windows 95 Kernel Using Windows Sockets

Windows 95 and Windows 95 OSR

175086 Regional Settings Specified in User Profile Are Not Applied

Windows 98

222131 Computer Hangs Clicking Close Button in Close Program Dialog Box

Windows 98 and Windows 98 Second Edition

272137 GetShortPathName() Does Not Work When It Is Passed a Long File Name from A Novell NetWare Server

Windows 98 Second Edition

262516 Close Program Dialog Box Hangs If You Click the Title Bar with a USB Mouse


Modification Type:MinorLast Reviewed:12/17/2004
Keywords:kbprb KB319508