BSOD on Windows 2012 R2

It is virtual machine, so only drivers here is VirtualHere and SmartCard driver, and on physical machine SmartCard was not issue.
Strange thing, that after first BSOD, it happened second time almost immediately after starting VirtualHere client, but when I restarted VirtualHere server - client started successfully.

Some excerpt from memory dump:

BAD_POOL_HEADER (19) The pool is already corrupt at the time of the current request. This may or may not be due to the caller. The internal pool links must be walked to figure out a possible cause of the problem, and then special pool applied to the suspect tags or the driver verifier to a suspect driver. Arguments: Arg1: 0000000000000020, a pool block header size is corrupt. Arg2: ffffe001fc723750, The pool entry we were looking for within the page. Arg3: ffffe001fc723800, The next pool entry. Arg4: 00000000040b0022, (reserved) DEFAULT_BUCKET_ID: WIN8_DRIVER_FAULT PROCESS_NAME: System CURRENT_IRQL: 0 SYMBOL_NAME: WinUSB!WinUSB_SelectConfiguration+96 FOLLOWUP_NAME: MachineOwner MODULE_NAME: WinUSB IMAGE_NAME: WinUSB.sys STACK_TEXT: ffffd000`b9718298 fffff802`5cd1c05e : 00000000`00000019 00000000`00000020 ffffe001`fc723750 ffffe001`fc723800 : nt!KeBugCheckEx ffffd000`b97182a0 fffff800`bec88ec8 : ffffe001`fc629840 00000000`00000000 ffffe001`fc723770 00000000`0000000b : nt!ExDeferredFreePool+0x7ee ffffd000`b9718390 fffff800`bec82a84 : ffffd000`b958aa50 00000000`00000000 00000000`00000000 00000000`00000000 : Wdf01000!FxUsbDevice::SelectConfigMulti+0x2b0 ffffd000`b9718550 fffff800`c09e7f06 : 00000000`00000020 00000000`00000000 ffffe001`fc62bc30 ffffe001`fc62bc30 : Wdf01000!imp_WdfUsbTargetDeviceSelectConfig+0x434 ffffd000`b97185e0 fffff800`c09e5fc1 : 00000000`00000000 00001ffe`039d46b8 ffffe001`fc62bc30 ffffe001`fc62bc30 : WinUSB!WinUSB_SelectConfiguration+0x96 ffffd000`b9718660 fffff800`bec1772b : ffffe001`fc612a50 00000000`00000000 ffffd000`b9718740 00000602`00000008 : WinUSB!WinUSB_PrepareHardware+0x1a1 ffffd000`b97186b0 fffff800`bec17fea : ffffe001`fc776400 ffffe001`fc7764d0 ffffd000`b97187b0 00000000`00000000 : Wdf01000!FxPkgPnp::PnpPrepareHardware+0xbb ffffd000`b9718700 fffff800`bec10942 : 00000000`00000101 00000000`00000108 00000000`00000108 00000000`00000000 : Wdf01000!FxPkgPnp::PnpEventHardwareAvailable+0x66 ffffd000`b9718740 fffff800`bec10a5a : ffffe001`fc612ba8 00000000`00000002 ffffe001`fc612a50 ffffe001`fc612b00 : Wdf01000!FxPkgPnp::PnpEnterNewState+0x102 ffffd000`b97187d0 fffff800`bec10bc4 : 00000000`00000000 ffffd000`b97188c0 ffffe001`fc612b80 00000000`00000000 : Wdf01000!FxPkgPnp::PnpProcessEventInner+0xc2 ffffd000`b9718850 fffff800`bec1727a : 00000000`00000000 ffffe001`fc612a50 00000000`00000000 ffffe001`fc612a50 : Wdf01000!FxPkgPnp::PnpProcessEvent+0xe4 ffffd000`b97188f0 fffff800`bec0b936 : ffffe001`fc612a50 ffffd000`b9718980 00000000`00000000 ffffe001`fc6372b0 : Wdf01000!FxPkgPnp::_PnpStartDevice+0x1e ffffd000`b9718920 fffff800`bec06a18 : ffffe001`fc2e77a0 ffffe001`fc2e77a0 00000000`00000000 ffffe001`fc62b940 : Wdf01000!FxPkgPnp::Dispatch+0xd2 ffffd000`b9718990 fffff800`c040af39 : fffff802`5cd29240 fffff800`c0432010 00000000`00000003 00000000`00000000 : Wdf01000!FxDevice::DispatchWithLock+0x7d8 ffffd000`b9718a70 fffff800`c040a650 : ffffe001`fc7713f0 00000000`80000000 00000000`00000000 00000000`00000000 : WUDFRd!RdPnpTracker::RdPnpForwardToLowerDevice+0xb9 ffffd000`b9718ac0 fffff800`c040a5da : fffff802`5ca7d000 ffffe001`fc7713f0 00000000`80000000 00000000`00000002 : WUDFRd!RdPnpTracker::RdPnpProcessor+0x300 ffffd000`b9718b50 fffff800`c0409889 : 00000000`00000000 ffffe001`fc7713f0 00000000`00000000 fffff800`c0409850 : WUDFRd!RdPnpTracker::RdPnpProcessor+0x28a ffffd000`b9718be0 fffff802`5caaefbc : ffffe001`fc771390 ffffd000`b9718c20 00000000`00000000 ffffc000`16671970 : WUDFRd!RdPnpTracker::RdPnpCallbackAtPassiveInSystemProcess+0x39 ffffd000`b9718c20 fffff802`5caaf79f : fffff802`5cefc4e8 fffff802`5caaef3c ffffe001`f9122040 fffff802`5cd59ae0 : nt!IopProcessWorkItem+0x80 ffffd000`b9718c90 fffff802`5caa19c4 : 0000b824`8c8d4800 ffffe001`f9122040 00000000`00000080 ffffe001`f9122040 : nt!ExpWorkerThread+0x69f ffffd000`b9718d40 fffff802`5cbd18c6 : ffffd000`b9570180 ffffe001`f9122040 ffffd000`b957c3c0 09750039`4808c083 : nt!PspSystemThreadStartup+0x58 ffffd000`b9718da0 00000000`00000000 : ffffd000`b9719000 ffffd000`b9713000 00000000`00000000 00000000`00000000 : nt!KiStartSystemThread+0x16
#2

It looks like it is happening in winusb.sys which is part of windows. What are you running the virtualhere server on? A windows pc or a linux embedded board?

#3

Both server and client running on Windows 2012 R2. Server on host system and client on VM.

Error happens in winusb driver (on client), but cause of error is memory corruption. And it happens only when VirtualHere client connected to server.
Two devices were attached to VM via VH - mass storage device and smart card USB token.

I can send you (mini) memory dump if needed.

#4

Generally the virtualhere driver doesnt cause bsod, but send me the dump and hopefully it might show vhcd or vhhub in the stack somewhere and ill have somewhere to start... thanks mail [at] virtualhere.com (mail[at]virtualhere[dot]com)

#6

When you turned off "Allow the computer to turn off this device to save power" did that fix the BSOD?

#7

Yes, there was no BSOD since then. Looks like either USB controller or device on server were power saved, and client crashed because of it.

#8

OK thanks for letting me know