Old 16-bit Application Causing GPF in WIN87EM.DLL, intermittently

20,259

Solution 1

This question is old but I had this exact win87em.dll crash with some 16-bit factory automation software running natively on windows 7. By following the method of HIDE87.com and editing autoexec.nt I was able to make the software stop crashing so that I could make edits.

This machine was running Intel 8 Series/C220 Series chips. I attribute this configuration to the crash because I have used this same 16-bit software on tons of other windows 7 machines for years now.

edit: here's the steps I used to fix the problem

  1. Download winfloat.exe from http://www.conradshome.com/win31/archive/
  2. Open winfloat.exe with 7zip. Find HIDE87.com and extract it to desktop.
  3. Copy HIDE87.com to C:\Windows\System32\
  4. Open c:\windows\system32\autoexec.nt with notepad
  5. At top of file, after first group of comments add the following

lh %SystemRoot%\system32\HIDE87.com

  1. Add a comment above your last line

REM Fix for Gen. Protection Fault in win87em.dll

  1. Save changes to autoexec.nt and reboot pc.

Solution 2

VirtualBox 4.3.16 should also have a fix. See https://www.virtualbox.org/ticket/12646 If you want the fix immediately, you'll have to build VirtualBox from OSE sources.

Update: VirtualBox 4.3.16 containing this fix is now officially released.

Solution 3

This was the same error I had with Microsoft XP Mode. Obviously WIN87EM.DLL has Problems with virtualized processors. My Solution: I "unloaded" the XP-Version of WIN87EM.DLL in the registry (search and delete every item with this name), and copied a much older version into application folder. The old version can be found her: http://support.microsoft.com/kb/86869/de Good luck!

Solution 4

Video Driver win87em.dll

This is the step by step resolution to the problem we had with the “win87em.dll” issue.

  1. Left-Click the START button in the bottom left corner of the screen.
  2. Right-Click My Computer and left click Properties.
  3. Left-Click the tab at the top that says Hardware
  4. Left-Click the button that says Device Manager.
  5. Left-Click the + sign next to Display Adapters near the top of the list.
  6. Right-Click the items shown in the expanded list under Display Adapters and left-click Disable.
  7. Left-Click the Yes button that shows when windows asks if you are sure you want to disable it.
  8. Left-Click the No button when windows asks if you want to reboot.
  9. Repeat the disable process for each item listed under Display Adapters (usually only one or two)
  10. Reboot the PC and the win87em.dll General Protection Fault errors should go away.

This is only applicable for users on Windows XP. Most likely the display adapters listed will be shown as an Intel G41 internal display adapter, but it may be another Intel device. If this does not fix the issue then it is likely a bad printer driver causing the problem.

Disabling the video adapter will not hurt windows. It will make their computer unable to watch videos or play 3D games, but windows will still run and look fine. (They will probably need to change their screen resolution after rebooting.)

Share:
20,259
Lance
Author by

Lance

Updated on July 09, 2022

Comments

  • Lance
    Lance almost 2 years

    I've got an old 16-bit application, that was developed for Windows 3.1. It preforms some calculations and is part of a more complex system. The system sets up the inputs for the program, and collects the output results.

    Unfortunately, the 16-bit program is here to stay for the mean time, so we have to work around the frustrations it causes on modern operating systems.

    The system runs on Windows XP, and on physical Windows XP machines it runs alright. The machine I'm having a problem with, is a Windows XP instance running on VirtualBox (version 4.1.12) on a Debian box. The physical computer is an HP Proliant server, with Quad Core Xeon 3.4 Ghz. I'm using remote desktop to access the computer from my Windows 7 box.

    The error I'm getting is, "PROGRAM caused a General Protection Fault in WIN87EM.DLL at address : 0001:02C9". The annoying thing is, at times it works and other times it doesn't, making troubleshooting all that more frustrating.

    From trawling the internet, I've come across a few sites that mention the same problem. None of them seem to offer real solutions, except to say that WIN87EM.DLL supplies floating point routines, and has some issues with certain printers.

    I've uninstalled all printers on the virtual machine, I've also tried installing a PDF writer and setting it as the default printer - so that there is a printer on the machine. I've disabled resource sharing with my Remote Desktop connection. I've updated the Virtual Machine Guest drivers on the machine. I've also tried setting the compatibility to Windows 95 in the properties of the executable.

    Any pointers for troubleshooting this problem, or methods I could try to get it working?

  • Tim Davis
    Tim Davis about 6 years
    So far, out of all the answers on the internet, this one works much better (not 100%, still GPF in some cases, but the speed is 1000% better. All of these Hide87 Solutions ignore the fact that you loose the co processor which will bring drawing/cad/floating point apps to a crawl