Suspend + GA = BSOD

pdxmbp

Junior Member
With the relased version of PD, I still can't suspend/resume without having Windows XP bluescreen. Was there something special needing to be configured to allow this to work correctly?
 
I have Parallel Tools Build 1848, 09-06-2006 installed.

I took the following steps from RC2 to Release

1) Uninstalled Parallel Tools from the VM
2) Rebooted VM
3) Shutdown VM
4) Uninstall script from Release
5) Reboot Host
6) Install PD from disk image
7) Rebooted host
8) Launched VM
9) Installed PM Tools
10) Rebooted VM
11) Suspended the host (after waiting for a few minutes for all services to start up)
12) Quit Parallels
13) Open Parallels
14) Resumed VM
15) BSOD

The VM is configured as before:
Memory: 1024
Network Adapter: Bridge Ethernet; Default Adapter
Acceleration: High
Intel VT-x Support: Checked

Like las time, I tried it with different configurations, but had the same results:

1) Memory: 1024, Acceleration: Normal
2) Memory: 784, Acceleration: Normal
3) Memory: 784, Acceleration: High

I ftped the memory dump from crash over time over, do you want me to do it again?
 
>11) Suspended the host (after waiting for a few minutes for all services to start up)
You mean suspended VM ofcourse?

Could you try temporarily disable some devices in your VM configuration - NIC, USB, CD, COM, LPT, and try to localize responsible device (if any)?
 
>11) Suspended the host (after waiting for a few minutes for all services to start up)
>You mean suspended VM ofcourse?

Yes, I mean the VM.

> Could you try temporarily disable some devices in your VM configuration - NIC, USB, CD, COM, LPT, and try to localize responsible device (if any)?

I have no devices enabled -- except networking. I've tried it also with removing the networking, but still have the same problem. Should I try it by removing PD Tools from the VM?
 
I did some further testing, and this is what I got.

Starting with everything off except hard drive it works fine, and when testing one thing at a time I get:

Shared folder: BSOD
Floppy: BSOD
CD/DVD: OK
NIC: BSOD
USB: OK

Haven't had time to test cross-dependencies yet.

Note: Parallels tools was not installed, I tried to uninstall to see if that was the cause.

Also, I managed to crash Parallels itself three times while testing: twice in strdup (KERN_PROTECTION_FAILURE (0x0002) at 0x00000000, "Whoops!") and a third time somewhere in your code (KERN_PROTECTION_FAILURE (0x0002) at 0x00000004). I can email a crash report if you want.
 
OK, forget what I wrote above. Even though the results were stable when I tested everything twice yesterday, I'm now confident that the error occurs randomly in every case.

I have, however, identified the VM's RAM-size as an important parameter in whether or not the error occurs. I often get a BSOD when using 256 MB (my default, host computer has 1 GB), but never when using 64 MB.

I think there's some kind of race condition within Paralells related to memory allocation.

While testing, I found a way to reproduce the BSOD without suspending/resuming, which might be useful in identifying the cause:

1, Run Parallels with environmental variable MallocStackLoggingNoCompact=1 (and perhaps MallocLogFile=whatever.log).

2, Start Parallels and a VM.

3, Run (in Terminal): malloc_history pid-of-parallels -all_by_size

4, Loads of "Deallocation of 153c6700 - no corresponding allocation" start to flood by (I'm not sure, but I think those are bogus), wait a second or so, then hit ctrl-c on malloc_history.

5, Seconds later, VM gets a BSOD (sometimes with a flickering screen, but I'm pretty sure I saw the "DRIVER_IRQL_NOT_LESS_OR_EQUAL"-string in all cases).

I have reproduced it three times, which is all I have time for today (everything runs very slow with malloc-debug on).

Hope you can reproduce it!

Update:
Here's another way which reproduces it for me.

1, Start VM.

2, Fill host computer's hard drive completely. Parallels will say that it won't run until 150 MB is available (by the way, the message should be changed to "more than 150 MB" or something, otherwise rounding can show a contradictory message like "Only 150 MB is available ... at least 150 MB free disk space is required").

3, Wait for a while (I guess to make some memory allocations happen in the background), then free up some diskspace and hit "Continue".

4, Enjoy BSOD "DRIVER_IRQL_NOT_LESS_OR_EQUAL".

Can some developer please see if they can reproduce it, and then fix it? :)

(Given the strdup of a NULL that I mentioned yesterday, could it be as easy as a failed malloc whose return value isn't checked?)
 
Last edited:
Just to chime in here, you two aren't the only ones having this problem. BSoD every time I resume from a suspension. MacBook 2GHz, OSX10.4.6, Windows XP SP2, Parallels final.
 
Back
Top