General Protection Fault in module WIN87EM.DLL at 0001:02C6

Discussions about using Windows guests in VirtualBox.
gleysson
Posts: 5
Joined: 12. Sep 2014, 23:02

Re: General Protection Fault in module WIN87EM.DLL at 0001:0

Post by gleysson »

win 7 64 is the host
Ramshankar
Oracle Corporation
Posts: 793
Joined: 7. Jan 2008, 16:17

Re: General Protection Fault in module WIN87EM.DLL at 0001:0

Post by Ramshankar »

gleysson wrote:I installed version 4.3.16 and still the same problem I believe has not been resolved yet.
Please attach VBox.log for this.
Oracle Corp.
gleysson
Posts: 5
Joined: 12. Sep 2014, 23:02

Re: General Protection Fault in module WIN87EM.DLL at 0001:0

Post by gleysson »

Four logs are attached and are in winrar.
Attachments
Logs_Vbox.rar
(74.48 KiB) Downloaded 112 times
michaln
Oracle Corporation
Posts: 2973
Joined: 19. Dec 2007, 15:45
Primary OS: MS Windows 7
VBox Version: PUEL
Guest OSses: Any and all
Contact:

Re: General Protection Fault in module WIN87EM.DLL at 0001:0

Post by michaln »

gleysson wrote:I installed version 4.3.16 and still the same problem I believe has not been resolved yet.
Okay, we looked into this. Unfortunately for you, you actually have a different problem caused by your CPU. Basically your CPU is too new for your old software.

The problem is that Intel decided that they wouldn't store segment information for the last instruction/data pointer that's part of the FPU state. When a floating-point exception occurs, Windows (WIN87EM.DLL) wants to examine the instruction causing the fault, but because the segments are zeroed, it will crash. It is highly likely that if you installed 32-bit Windows on the host system directly, you'd have the same problem (if not, we'd like to hear about it).

It's currently not clear what, if anything, we can do about this. At any rate, it'd require some engineering effort and won't happen immediately.

For your reference, this is indicated by CPUID.(EAX=07H,ECX=0H):EBX[bit 13] = 1. Bit 13 is documented as "Deprecates FPU CS and FPU DS values if 1." in Intel manuals. Details are in Vol. 1 section 8.1.8, "x87 FPU Instruction and Data (Operand) Pointers".

If you want a short-term solution, get a CPU which is compatible with your software. Ivy Bridge or older Intels will do, any AMD probably as well.
gleysson
Posts: 5
Joined: 12. Sep 2014, 23:02

Re: General Protection Fault in module WIN87EM.DLL at 0001:0

Post by gleysson »

michaln,

actually the problem was the processor, tested the program on a core i5 Ivy Bridge and it worked, for now only solution is that we have not only performed the test on 32bit windows in the fourth generation processor but, so I'll post test results. thanks for the support and sorry for the google translator :D
Mike_in_Oz
Posts: 1
Joined: 14. Oct 2014, 00:34

Re: General Protection Fault in module WIN87EM.DLL at 0001:0

Post by Mike_in_Oz »

This problem (of legacy 16 bit Windows programs no longer executing on previously reliable virtual machines due to the hardware issues on the new host) ) is going to become huge as more and more folk transition to more modern CPUs. As being able to run some old software was one of the main reasons I use VirtualBox, this is a disaster to me! The idea of disabling the floating point processor seems to work but renders the program I run so slow that it becomes unusable. All I can hope for is that the VirtualBox 'community' will figure out a coding fix for this?

cheers
Mike_in_Oz
michaln
Oracle Corporation
Posts: 2973
Joined: 19. Dec 2007, 15:45
Primary OS: MS Windows 7
VBox Version: PUEL
Guest OSses: Any and all
Contact:

Re: General Protection Fault in module WIN87EM.DLL at 0001:0

Post by michaln »

Mike_in_Oz wrote:This problem (of legacy 16 bit Windows programs no longer executing on previously reliable virtual machines due to the hardware issues on the new host) ) is going to become huge as more and more folk transition to more modern CPUs.
That's something you need to tell Intel... they clearly think it's a non-issue.

We've had a brief look at the problem but it's not at all clear that the new/crippled hardware can be worked around in software.

Note that this is different from a bug in VirtualBox that produced more or less exactly the same symptomps on older CPUs (and which was the original subject of this thread), but that ought to be fixed now.
DMDiegom
Posts: 1
Joined: 20. Mar 2015, 21:47

Re: General Protection Fault in module WIN87EM.DLL at 0001:0

Post by DMDiegom »

Hi im having problems with an old software called CAD ESTIMATOR works on the old machine on XP, But through "Virtual box on macbook pro 2014" it works until I Click on generate reports which is similar to spreadsheets that brings all the calculations on the program and this is what I get

"CADEST caused a general protection fault in module WIN87EM.DLL at 0001:02C9" I read through the posts, in some it says it has been fixed but I don't see how to fix it, maybe I don't understand it please help thank you.
michaln
Oracle Corporation
Posts: 2973
Joined: 19. Dec 2007, 15:45
Primary OS: MS Windows 7
VBox Version: PUEL
Guest OSses: Any and all
Contact:

Re: General Protection Fault in module WIN87EM.DLL at 0001:0

Post by michaln »

A VBox.log would help. If you have one of the affected Intel CPUs then nothing will help you, short of using a different computer with a fully functioning CPU. VBox.log will tell for certain if your CPU is problematic or not (98% chance it is).
dukbilt
Posts: 4
Joined: 22. Sep 2015, 09:33

Re: General Protection Fault in module WIN87EM.DLL at 0001:0

Post by dukbilt »

I'm experiencing this issue too (using VB 5.0.0 on MacBook Pro running Yosemite).

Any options to resolve this?
mpack
Site Moderator
Posts: 39156
Joined: 4. Sep 2008, 17:09
Primary OS: MS Windows 10
VBox Version: PUEL
Guest OSses: Mostly XP

Re: General Protection Fault in module WIN87EM.DLL at 0001:0

Post by mpack »

dukbilt wrote:Any options to resolve this?
Depends what "this" is. The original (OP) problem was fixed, as you can see if you check the bug ticket.

If you have the latter (CPU) problem then you need new software or an older CPU.
dukbilt
Posts: 4
Joined: 22. Sep 2015, 09:33

Re: General Protection Fault in module WIN87EM.DLL at 0001:0

Post by dukbilt »

My Macbook Pro uses an Intel Core i5 processor - does that mean my current hardware limits the virtualisation options? That seems to be completely against what virtualisation is meant to provide...
mpack
Site Moderator
Posts: 39156
Joined: 4. Sep 2008, 17:09
Primary OS: MS Windows 10
VBox Version: PUEL
Guest OSses: Mostly XP

Re: General Protection Fault in module WIN87EM.DLL at 0001:0

Post by mpack »

You think that virtualization doesn't care about the host hardware? If so then that would be incorrect. Have you actually read the posts in this topic? I would think the explanations were quite clear.
michaln
Oracle Corporation
Posts: 2973
Joined: 19. Dec 2007, 15:45
Primary OS: MS Windows 7
VBox Version: PUEL
Guest OSses: Any and all
Contact:

Re: General Protection Fault in module WIN87EM.DLL at 0001:0

Post by michaln »

dukbilt wrote:My Macbook Pro uses an Intel Core i5 processor - does that mean my current hardware limits the virtualisation options?
This problem has nothing to do with virtualization. The CPU simply behaves differently, but virtualization isn't emulation so the different behavior is visible in a VM just as much as it's visible on the host.
That seems to be completely against what virtualisation is meant to provide...
Not at all. Virtualization was never about exactly emulating a specific CPU, it was (and is) intended for resource sharing and management.

Basically if you think your Intel CPU is broken, you need to take that up with Intel. Although I'm sure they have some sense of how many of their customers are affected and decided that they didn't care.
dukbilt
Posts: 4
Joined: 22. Sep 2015, 09:33

Re: General Protection Fault in module WIN87EM.DLL at 0001:0

Post by dukbilt »

A possible solution:

1. Download "Winfloat.exe" (http://www.conradshome.com/win31/archiv ... nfloat.exe) to your VM.
2. Double-click on "Winfloat.exe" to extract files to C: drive.
3. Copy “HIDE87.com” to the c:\windows\system32 directory.
4. Open the “autoexec.nt” file (c:\windows\system32\autoexec.nt) with a text editor.
5. Add “lh c:\windows\system32\HIDE87.com” to the “autoexec.nt” file.
6. Save the file, and exit.
7. Reboot the Virtual Machine.
8. Done!
Post Reply