Memory Leak in Windows 95 Kernel Using Windows Sockets

This article has been archived. It is offered "as is" and will no longer be updated.

Symptoms

When you run a program that uses Windows Sockets in Windows 95, a gradual increase in the memory used by the operating system may occur over time, especially if the program opens and closes a large number of sockets.

Cause

There is an error in the Windows 95 Kernel (Kernel32.dll) that prevents the proper freeing of certain small data structures associated with Windows Socket processes and allocated sockets. Over time, these small memory leaks can result in a significant loss of available memory.

Note that you can free the resources associated with a program by closing the program. If you quit and restart Windows 95, the memory is freed.

Resolution

Microsoft has released an updated version of the Kernel32.dll file that corrects the problem described in this article. The updated file is:

KERNEL32.DLL version 4.00.951 (dated 2/2/96) and later

To install the updated Kernel, follow these steps:

Download the Krnlupd.exe file to an empty folder.

In My Computer or Windows Explorer, double-click the Krnlupd.exe file you downloaded in step 1.

Follow the instructions on the screen.

The following file is available for download from the Microsoft Download Center:

Microsoft scanned this file for viruses. Microsoft used the most current virus-detection software that was available on the date that the file was posted. The file is stored on security-enhanced servers that help to prevent any unauthorized changes to the file.

Status

Microsoft has confirmed that this is a problem in Windows 95 (retail version) and Windows 95 OEM Service Release 1 (OSR1).

This problem was corrected in Windows 95 OEM Service Release 2 (OSR2) and later versions (including Windows 98).

If you wish to uninstall the updated Kernel32.dll file, use the right Mouse button to click the Krnl32un.inf file in the Windows folder, and then click Install from the menu that appears. This step replaces the updated Kernel32.dll with the version that was previously installed on your computer and removes Krnl32un.inf.