Hello,
I am working on an embedded software project where I need to support multiple targets, one of which is an MSP430 which we'd like to use with IAR Workbench, and another is only supported with a Linux based toolchain. Thus, I have a system with IAR and VirtualBox installed.
Now, if both VirtualBox is running and the FET is plugged in, the system crashes with a bluescreen, so that I have to unplug the FET before starting the VM, or stop the VM before connecting the FET.
Running WinDbg on the crash dump generated by the kernel gives
nt!ZwYieldExecution+0x1bb6
nt!KeSetEvent+0x5a
nt!IoReleaseRemoveLockEx+0xb9
VBoxUSBMon+0x757
nt!IoBuildPartialMdl+0xed
wdf01000+0x126b9
wdf01000+0xdcb5
umpusbvista+0x9692
umpusbvista+0x26e5
umpusbvista+0x27ac
umpusbvista+0x98d1
wdf01000+0x4a2b4
wdf01000+0x49d81
wdf01000+0x4abb2
wdf01000+0x4b5bb
wdf01000+0x53d3a
nt!IoGetRequestorSessionId+0x219
nt!IoCancelIrp+0x120
usbhub+0x5e0d
usbhub+0x68ec
The exception reason given is a NULL pointer dereference. It is rather difficult for me to tell which module is at fault here, as the crash happens inside the VirtualBox USB filter driver (which is configured to ignore the FET), but while accessing data structures that, to my knowledge, are provided by the FET driver. So either the FET driver incorrectly leaves out a required member, and Windows silently ignores that error while VBox stumbles over it, or VBox is not properly verifying that a certain pointer or handle is really initialized before using it. Either way, it'd be good to establish what is happening here, so that the problem can be fixed.
The issue can be reproduced with the current umpusbvista driver on both XP and Windows 7, 32 or 64 bit, with current VirtualBox.