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: Jun 16, 2006