Crashes in Virtual PC / Older Windows

Crashes in Virtual PC / Older Windows

I'm trialing the LZ77 compression functions in IPP. On my normal machine Win7 x64 the 32bit app linked with the _l version of the libraries is working fine. When I try to run it under Virtual PC 2007 on certain OSes I get a crash when it goes to use the ipp functions. Under NT4 SP6 in the virtual pc it reports invalid instruction (0xc000001d), under XP in the virtual pc it says ".. has encountered a problem and needs to close" (0xc0000005). However under Windows 98SE and Vista in Virtual PC it was working for both. I tried with and without hardware virtualization enabled on the virtual machine.

Why would it care about the OS? Is there something I'm missing here? Or Bug?

P.S. I'm not looking for a boiler plate answer that you need XP SP3 or later or something like that because were talking just low level code that works on linux, windows, raw system and may end up in drivers as well and can't have apps limited to only working on a certain OS.

More details: If the program actually loaded at 0x400000 then the instruction on NT4 reported as invalid is: movd xmm0, esi

Also running the CPU ID utility from Intel version 4.50.20120412 - universal one says the same thing if hardware assistance is enabled or not. It say s it's an i7-2600K CPU @ 3.40GHz expected, -32768 reported, , system bus 100MHZ. Processor Type: 0, packaging: LGA2011, Family: 6, Model: 2A, Stepping: 7, Revision: 7FFFFFFF, Level 2 cache, none, Level 1 data/ins cache:0, SIMD Yes, SIMD 2 Yes, SIMD3,4 and the rest of it, No. So maybe either Virtual PC misreports the CPU instructions it supports or the CPU detection routine goes outside the VM to find the system CPU which then causes the wrong supported instructions from being used????

2 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Found some old 2004 information about NT 4 and SSE2 ...

"In Windows NT 4.0 Service Pack 4.0 and lower, SIMD registers aren't saved on a context switch unless special Intel Drivers
are installed."

So there is supposed to be some drivers for NT 4. But why doesn't the detection routine take in to account the OS level and any drivers required to be installed before falling back to some other routine that doesn't use those instructions?

Even though I think it should do that detection automatically, this can be workable if the NT4 drivers are available for download, even if no longer officially supported. Does anyone have the link?

Leave a Comment

Please sign in to add a comment. Not a member? Join today