From: Asaf Shelly on
Hi All,

I have a custom USB device which got the USB miniport host (usbhci or
something else) to bug-check D1 (invalid access to memory)

This started with an implementation of DDK 6.0 BulkUsb sample. Now I have
the same results with WinUSB.

Using .Net helps but it also happenes with native C++. My guess is
performance.
If I read more than 128 bytes (the descriptor says 128 bytes buffer) I get
the crash after the 2'nd to 4'th read.

It is also possible that the device is mis-behaving. Old code that I did not
clean yet. Still a stupid device is no reason for a blue-screen.

Any idea?

TIA,
Asaf
http://Asaf.Shelly.co.il
From: Asaf Shelly on
Too soon to speak. After a couple of days it decided to crash on 128 bytes
also. What an unreliable bug...


Asaf
http://AsyncOp.com
From: Asaf Shelly on
Adding USBPort to the list with 0x8E
"USBPORT!USBPORT_AsyncTransfer+e"


Asaf

From: Doron Holan [MSFT] on
send the output of !analyze -v from the crash

d

--

This posting is provided "AS IS" with no warranties, and confers no rights.


"Asaf Shelly" <MSMediaForum(a)Shelly.co.il> wrote in message
news:210DAA9A-CCB3-4A51-AB65-4204B5E84896(a)microsoft.com...
> Adding USBPort to the list with 0x8E
> "USBPORT!USBPORT_AsyncTransfer+e"
>
>
> Asaf
>
From: Asaf Shelly on
Hi Doron,

Sorry for the delayed response (weekend and all..)

The problem was that the device was defined as a USB 2.0 device (usbbcd) but
was internally configured as USB 1.1. A while ago someone found a problem
with USB 2.0 speed so he reconfigured the device to work as a USB 1.1 device
(but didn't understand USB well enough to look for this in the descriptors).

Can the USB stack detect the speed as reported by the hub when the device is
connected. Clearly this is a mulfunction in the device but would it justify a
bad memory access bug-check?

Here is the dump:
1: kd> !analyze -v
*******************************************************************************
*
*
* Bugcheck Analysis
*
*
*
*******************************************************************************

KERNEL_MODE_EXCEPTION_NOT_HANDLED (8e)
This is a very common bugcheck. Usually the exception address pinpoints
the driver/function that caused the problem. Always note this address
as well as the link date of the driver/image that contains this address.
Some common problems are exception code 0x80000003. This means a hard
coded breakpoint or assertion was hit, but this system was booted
/NODEBUG. This is not supposed to happen as developers should never have
hardcoded breakpoints in retail code, but ...
If this happens, make sure a debugger gets connected, and the
system is booted /DEBUG. This will let us see why this breakpoint is
happening.
Arguments:
Arg1: c0000005, The exception code that was not handled
Arg2: b8b0332e, The address that the exception occurred at
Arg3: 9b8f87f4, Trap Frame
Arg4: 00000000

Debugging Details:
------------------

***** Kernel symbols are WRONG. Please fix symbols to do analysis.

********************************************************
.............. some more of that ...............
********************************************************

ADDITIONAL_DEBUG_TEXT:
Use '!findthebuild' command to search for the target build information.
If the build information is available, run '!findthebuild -s ; .reload' to
set symbol path and load symbols.

MODULE_NAME: WinUSB

FAULTING_MODULE: 804d7000 nt

DEBUG_FLR_IMAGE_TIMESTAMP: 4a5bc86f

EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - The instruction at "0x%08lx"
referenced memory at "0x%08lx". The memory could not be "%s".

FAULTING_IP:
USBPORT!USBPORT_AsyncTransfer+e
b8b0332e 83b91c01000001 cmp dword ptr [ecx+11Ch],1

TRAP_FRAME: 9b8f87f4 -- (.trap 0xffffffff9b8f87f4)
ErrCode = 00000000
eax=891cf7ac ebx=8aa54ed8 ecx=ffffffff edx=899cb0ec esi=891cf7ac edi=80546acc
eip=b8b0332e esp=9b8f8868 ebp=9b8f8868 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010246
USBPORT!USBPORT_AsyncTransfer+0xe:
b8b0332e 83b91c01000001 cmp dword ptr [ecx+11Ch],1
ds:0023:0000011b=????????
Resetting default scope

DEFAULT_BUCKET_ID: DRIVER_FAULT

BUGCHECK_STR: 0x8E

MANAGED_STACK: !dumpstack -EE
OS Thread Id: 0x0 (1)
TEB information is not available so a stack size of 0xFFFF is assumed
Current frame:
ChildEBP RetAddr Caller,Callee

LAST_CONTROL_TRANSFER: from 804fe827 to 804f9f43

STACK_TEXT:
WARNING: Stack unwind information not available. Following frames may be
wrong.
9b8f83bc 804fe827 0000008e c0000005 b8b0332e nt!KeBugCheckEx+0x1b
9b8f8784 80542095 9b8f87a0 00000000 9b8f87f4 nt!KeRaiseUserException+0xc29
9b8f8868 b8b02f14 899cb028 8aa54ed8 891cf7ac nt!Kei386EoiHelper+0x1d9
9b8f8894 b8b08088 89a94030 899cb028 00000090 USBPORT!USBPORT_ProcessURB+0x3f4
9b8f88b4 b8af13d2 89a94030 8aa54ed8 89a94030
USBPORT!USBPORT_PdoInternalDeviceControlIrp+0x7e
9b8f88d8 804ef19f 8aa54fb4 89a94188 806e6428 USBPORT!USBPORT_Dispatch+0x148
9b8f890c afa7659c 9b8f8934 afa7a82d 8aa54ed8 nt!IoBuildPartialMdl+0xed
9b8f8914 afa7a82d 8aa54ed8 89a94030 8aa54ed8 usbhub!USBH_PassIrp+0x18
9b8f8934 afa7b0ae 899930e8 8aa54ed8 88fa0de8 usbhub!USBH_PdoUrbFilter+0xbd
9b8f8950 afa785e4 891cf7ac 8aa54ed8 9b8f8994 usbhub!USBH_PdoDispatch+0x202
9b8f8960 804ef19f 88fa0de8 8aa54ed8 806e6428 usbhub!USBH_HubDispatch+0x48
9b8f8994 9a9cc164 9b8f89e0 89225fd8 7708c8a8 nt!IoBuildPartialMdl+0xed
9b8f89ac 9b6aa777 00000005 89225f00 88f73750 wdf01000+0x16164
9b8f8a08 9a9e5072 030d5910 76dda0f8 0000000f WinUSB+0x5777
9b8f8a2c 9a9e63d0 770d5910 76dda0f8 0000000f wdf01000+0x2f072
9b8f8a5c 9a9e89ac 76dda0f8 89225f00 88f2a6e8 wdf01000+0x303d0
9b8f8a78 9a9e9b7f 88f2a600 00000000 89225f00 wdf01000+0x329ac
9b8f8a98 9a9ea29b 89225f00 88f64e00 89029888 wdf01000+0x33b7f
9b8f8ac0 9a9ea70f 89225f00 88f2a6e8 76dda0f8 wdf01000+0x3429b
9b8f8ae0 9a9caedd 88f2a6e8 89225f00 89225fd8 wdf01000+0x3470f
9b8f8b00 9b6aa51b 00000000 76dda0f8 88f2a6e8 wdf01000+0x14edd
9b8f8b24 9b6a7cdb 899629f8 7709b1f8 76dda0f8 WinUSB+0x551b
9b8f8b5c 9a9e5072 7709b1f8 76dda0f8 0000000f WinUSB+0x2cdb
9b8f8b80 9a9e63d0 7709b1f8 76dda0f8 0000000f wdf01000+0x2f072
9b8f8bb0 9a9e89ac 76dda0f8 89225f00 88f64e00 wdf01000+0x303d0
9b8f8bcc 9a9e9a36 88f64e00 00000000 89a426f0 wdf01000+0x329ac
9b8f8bec 9a9eb824 89225f00 88fb09d0 88fc4840 wdf01000+0x33a36
9b8f8c10 9a9daa3f 8aa54ed8 9b8f8c50 804ef19f wdf01000+0x35824
9b8f8c1c 804ef19f 88fb09d0 8aa54ed8 806e6428 wdf01000+0x24a3f
9b8f8c50 8057f982 8aa54fd8 892530e8 8aa54ed8 nt!IoBuildPartialMdl+0xed
9b8f8c64 805807f7 88fb09d0 8aa54ed8 892530e8 nt!NtWriteFile+0x2a90
9b8f8d00 80579274 00000574 00000595 00000000 nt!NtWriteFile+0x3905
9b8f8d34 8054162c 00000574 00000595 00000000 nt!NtDeviceIoControlFile+0x2a
9b8f8d70 9c17454a 00000000 00000000 00000000
nt!KeReleaseInStackQueuedSpinLockFromDpcLevel+0xb74
9b8f8ddc 805460ee 9c17e93d 9c17dfc0 00000000
rdbss!RxpWorkerThreadDispatcher+0x18a
9b8f8e0c 7c910222 00000022 00000ce8 00000000 nt!KiDispatchInterrupt+0x72e
9b8f8e20 7c910222 00000002 00000000 00150000 ntdll!RtlAllocateHeap+0x15e
9b8f8e4c 7c910222 7c91019b 000001db 00000000 ntdll!RtlAllocateHeap+0x15e
00000000 00000000 00000000 00000000 00000000 ntdll!RtlAllocateHeap+0x15e


STACK_COMMAND: kb

FOLLOWUP_IP:
WinUSB+5777
9b6aa777 84c0 test al,al

SYMBOL_STACK_INDEX: d

SYMBOL_NAME: WinUSB+5777

FOLLOWUP_NAME: MachineOwner

IMAGE_NAME: WinUSB.sys

BUCKET_ID: WRONG_SYMBOLS

Followup: MachineOwner
---------