Tech Support > Microsoft Windows > Drivers > Two more bugs in XP USB system
Two more bugs in XP USB system
Posted by fat_boy on June 13th, 2008


Its been a while since I had a play with USB on XP, so I havent found
any bugs for a while, but here are two new ones:

1) If a filter driver synchronously handles (copy stack location, set
cancel routine, call driver, kewait if pending) a
URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER (direction IN, I havent
verified it for OUT) then the URB never gets completed by the lower
(in this case usbccgp.sys) driver. If kewait is excluded, then its
OK.

*Note this is with Irql checking, so it only waits if the irp is sent
at passive level.

2) A BUG_CODE_USB_DRIVER URB DOUBLE SUBMIT in usbser.sys after a
return to D0 from D2 (it starts the read going again) here is the
stack trace starting with the device power up completion in
usbser.sys:

ec53e20c 804f8afd 00000003 ec53e568 00000000 nt!
RtlpBreakWithStatusInstruction
ec53e258 804f96e8 00000003 832a6e90 8307c0ec nt!KiBugCheckDebugBreak
+0x19
ec53e638 804f9c37 000000fe 00000004 832a6e90 nt!KeBugCheck2+0x574
ec53e658 f743a3b5 000000fe 00000004 832a6e90 nt!KeBugCheckEx+0x1b
ec53e688 f744007e 8307c028 82ef3008 586b6b66 USBPORT!
USBPORT_FindUrbInIrpTable+0x115
ec53e6ec f74411f6 00c51690 ffffffff 80545aac USBPORT!
USBPORT_FlushPendingList+0x346
ec53e71c f7448198 82bd8350 ec53e754 f7447d5c USBPORT!
USBPORT_QueueTransferUrb+0x248
ec53e728 f7447d5c 8307c028 832a6e90 82d13e14 USBPORT!
USBPORT_AsyncTransfer+0x30
ec53e754 f744cdfe 82ef1030 8307c028 00000090 USBPORT!USBPORT_ProcessURB
+0x3f4
ec53e774 f74361e2 82ef1030 832a6e90 82ef1030 USBPORT!
USBPORT_PdoInternalDeviceControlIrp+0x7e
ec53e798 804eeeb1 832a6f6c 82ef1188 806e4428 USBPORT!USBPORT_Dispatch
+0x148
ec53e7a8 80656128 832a6e90 82d13e14 82bd6440 nt!IopfCallDriver+0x31
ec53e7cc f762750a ec53e7f4 f762b2d9 832a6e90 nt!IovCallDriver+0xa0
ec53e7d4 f762b2d9 832a6e90 82ef1030 832a6e90 usbhub!USBH_PassIrp+0x18
ec53e7f4 f762bafa 82ef1c30 832a6e90 82bd6388 usbhub!USBH_PdoUrbFilter
+0xbd
ec53e810 f76291d8 82d13e14 832a6e90 ec53e854 usbhub!USBH_PdoDispatch
+0x202
ec53e820 804eeeb1 82bd6388 832a6e90 806e4428 usbhub!USBH_HubDispatch
+0x48
ec53e830 80656128 82c4fe20 82f47990 82cabd00 nt!IopfCallDriver+0x31
ec53e854 f78184db 00220003 832a6f6c 80000000 nt!IovCallDriver+0xa0
ec53e870 f781776b 82c4fee0 832a6e90 ffffffff usbccgp!
ParentInternalDeviceControl+0xbb
ec53e894 f78175d3 82c4fed8 832a6e90 0000000f usbccgp!
USBC_InternalDeviceControl+0x3b
ec53e8d0 804eeeb1 82c4fe20 832a6e90 806e4428 usbccgp!USBC_Dispatch
+0x183
ec53e8e0 80656128 82be3118 82f47990 82cabd00 nt!IopfCallDriver+0x31
ec53e904 f7819231 80000000 00000009 00220003 nt!IovCallDriver+0xa0
ec53e934 f7817786 82be31d8 832a6e90 82be31d8 usbccgp!
FunctionInternalDeviceControl+0x1c1
ec53e958 f78175d3 82be31d0 832a6e90 0000000f usbccgp!
USBC_InternalDeviceControl+0x56
ec53e994 804eeeb1 82be3118 832a6e90 806e4428 usbccgp!USBC_Dispatch
+0x183
ec53e9a4 80656128 82c2dde0 82bbde28 82cabd00 nt!IopfCallDriver+0x31
ec53e9c8 f7821e9d 82c2de98 f7820fc8 ec53ea00 nt!IovCallDriver+0xa0
ec53e9d8 f78219d7 82c2dde0 832a6e90 00000009 IcFltr!
FPFilterSendToNextDriver+0x6d [c:\work_home\filter\entry.c @ 1348]
ec53ea00 804eeeb1 82c2dde0 832a6e90 806e4428 IcFltr!
FPFilterDeviceControl+0x357 [c:\work_home\filter\entry.c @ 1127]
ec53ea10 80656128 832a6e90 82cab9a8 82cabd10 nt!IopfCallDriver+0x31
ec53ea34 f78280d9 8336ce48 82cab9a8 82cabaa0 nt!IovCallDriver+0xa0
ec53ea48 f7827883 82cab9a8 8336ce48 ec53eae8 usbser!RestartNotifyRead
+0x73
ec53ea60 80656330 82cab8f0 8336ce48 82cab8f0 usbser!
UsbSer_PowerIrp_Complete+0x53




Now, I know the USB sub sys is a little unstable with mixed URBs and
Irps when it comes to reuse/new allocation so this could be that old
bug, or it could be something in usbser.sys. (Its version
5.1.2600.3234 by thw way)


I havent check yet to see if these bugs are also there on Vista yet.


Similar Posts