Duplicate PDO at usbccgp.sys

Hi everybody

I have a problem with my USB driver for a proprietary device. Everything works fine, until I connect two identical devices to two different USB host controller on the same PC. In this case the computer crashes with a PNP_DETECTED_FATAL_ERROR. There is no problem if both devices are connected to the same host controller. I’ve tested it on Windows XP SP2.

The device is a composite device with the following interfaces:

Interface 0: Storage Device
Interface 1: HID
Interface 2: Proprietary Interface

This is the corresponding WinDBG output:

1: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************

PNP_DETECTED_FATAL_ERROR (ca)
PnP encountered a severe error, either as a result of a problem in a driver or
a problem in PnP itself. The first argument describes the nature of the
problem, the second argument is the address of the PDO. The other arguments
vary depending on argument 1.
Arguments:
Arg1: 00000001, Duplicate PDO
A specific instance of a driver has enumerated multiple PDOs with
identical device id and unique ids.
Arg2: 899c9570, Newly reported PDO.
Arg3: 89a4b2e8, PDO of which it is a duplicate.
Arg4: 00000000

Debugging Details:

*** No owner thread found for resource 8055a4e0
*** No owner thread found for resource 8055a4e0
*** No owner thread found for resource 8055a4e0
*** No owner thread found for resource 8055a4e0

BUGCHECK_STR: 0xCA_1

DEVICE_OBJECT: 899c9570

DRIVER_OBJECT: 8a1fed78

IMAGE_NAME: usbccgp.sys

DEBUG_FLR_IMAGE_TIMESTAMP: 41107d6d

MODULE_NAME: usbccgp

FAULTING_MODULE: bac68000 usbccgp

DEFAULT_BUCKET_ID: DRIVER_FAULT

PROCESS_NAME: System

LOCK_ADDRESS: 8055a560 – (!locks 8055a560)

Resource @ nt!IopDeviceTreeLock (0x8055a560) Shared 1 owning threads
Threads: 8a6bcda8-01<*>
1 total locks, 1 locks currently held

PNP_TRIAGE:
Lock address : 0x8055a560
Thread Count : 1
Thread address: 0x8a6bcda8
Thread wait : 0xbe6a

LAST_CONTROL_TRANSFER: from 8059084d to 804f9f13

STACK_TEXT:
bad039d4 8059084d 000000ca 00000001 899c9570 nt!KeBugCheckEx+0x1b
bad03ad0 8059100f 8a065b48 8a57b778 8a171350 nt!PipProcessNewDeviceNode+0x5d1
bad03d24 805915de 8a171350 00000001 00000000 nt!PipProcessDevNodeTree+0x16b
bad03d54 804f6970 00000003 8055a5c0 805637bc nt!PiRestartDevice+0x80
bad03d7c 80537aff 00000000 00000000 8a6bcda8 nt!PipDeviceActionWorker+0x168
bad03dac 805cea08 00000000 00000000 00000000 nt!ExpWorkerThread+0xef
bad03ddc 8054546e 80537a10 00000001 00000000 nt!PspSystemThreadStartup+0x34
00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16

STACK_COMMAND: kb

FOLLOWUP_NAME: MachineOwner

FAILURE_BUCKET_ID: 0xCA_1_IMAGE_usbccgp.sys_DATE_2004_08_04

BUCKET_ID: 0xCA_1_IMAGE_usbccgp.sys_DATE_2004_08_04

Followup: MachineOwner

1: kd> lmvm usbccgp
start end module name
bac68000 bac6fb80 usbccgp (pdb symbols) C:\WINDDK\Symbols\free\xpsp2\sys\usbccgp.pdb
Loaded symbol image file: usbccgp.sys
Image path: \SystemRoot\system32\DRIVERS\usbccgp.sys
Image name: usbccgp.sys
Timestamp: Wed Aug 04 08:08:45 2004 (41107D6D)
CheckSum: 00013C1C
ImageSize: 00007B80
Translations: 0000.04b0 0000.04e0 0409.04b0 0409.04e0

Does anybody has a idea what’s going wrong?

Thanks, patric

Your USB devices are supposed to have unique serial numbers. Failure to meet
this requirement is not supposed to cause a duplicate PDO event however.

On Thu, May 15, 2008 at 11:05 AM, wrote:

> Hi everybody
>
> I have a problem with my USB driver for a proprietary device. Everything
> works fine, until I connect two identical devices to two different USB host
> controller on the same PC. In this case the computer crashes with a
> PNP_DETECTED_FATAL_ERROR. There is no problem if both devices are connected
> to the same host controller. I’ve tested it on Windows XP SP2.
>
> The device is a composite device with the following interfaces:
>
> Interface 0: Storage Device
> Interface 1: HID
> Interface 2: Proprietary Interface
>
> This is the corresponding WinDBG output:
>
> 1: kd> !analyze -v
>
> ****
>
>
> * Bugcheck Analysis
>
>
>
>
>

>
> PNP_DETECTED_FATAL_ERROR (ca)
> PnP encountered a severe error, either as a result of a problem in a driver
> or
> a problem in PnP itself. The first argument describes the nature of the
> problem, the second argument is the address of the PDO. The other
> arguments
> vary depending on argument 1.
> Arguments:
> Arg1: 00000001, Duplicate PDO
> A specific instance of a driver has enumerated multiple PDOs with
> identical device id and unique ids.
> Arg2: 899c9570, Newly reported PDO.
> Arg3: 89a4b2e8, PDO of which it is a duplicate.
> Arg4: 00000000
>
> Debugging Details:
> ------------------
>
> No owner thread found for resource 8055a4e0
>
No owner thread found for resource 8055a4e0
> No owner thread found for resource 8055a4e0
>
No owner thread found for resource 8055a4e0
>
> BUGCHECK_STR: 0xCA_1
>
> DEVICE_OBJECT: 899c9570
>
> DRIVER_OBJECT: 8a1fed78
>
> IMAGE_NAME: usbccgp.sys
>
> DEBUG_FLR_IMAGE_TIMESTAMP: 41107d6d
>
> MODULE_NAME: usbccgp
>
> FAULTING_MODULE: bac68000 usbccgp
>
> DEFAULT_BUCKET_ID: DRIVER_FAULT
>
> PROCESS_NAME: System
>
> LOCK_ADDRESS: 8055a560 – (!locks 8055a560)
>
> Resource @ nt!IopDeviceTreeLock (0x8055a560) Shared 1 owning threads
> Threads: 8a6bcda8-01<
>
> 1 total locks, 1 locks currently held
>
> PNP_TRIAGE:
> Lock address : 0x8055a560
> Thread Count : 1
> Thread address: 0x8a6bcda8
> Thread wait : 0xbe6a
>
> LAST_CONTROL_TRANSFER: from 8059084d to 804f9f13
>
> STACK_TEXT:
> bad039d4 8059084d 000000ca 00000001 899c9570 nt!KeBugCheckEx+0x1b
> bad03ad0 8059100f 8a065b48 8a57b778 8a171350
> nt!PipProcessNewDeviceNode+0x5d1
> bad03d24 805915de 8a171350 00000001 00000000 nt!PipProcessDevNodeTree+0x16b
> bad03d54 804f6970 00000003 8055a5c0 805637bc nt!PiRestartDevice+0x80
> bad03d7c 80537aff 00000000 00000000 8a6bcda8 nt!PipDeviceActionWorker+0x168
> bad03dac 805cea08 00000000 00000000 00000000 nt!ExpWorkerThread+0xef
> bad03ddc 8054546e 80537a10 00000001 00000000 nt!PspSystemThreadStartup+0x34
> 00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16
>
>
> STACK_COMMAND: kb
>
> FOLLOWUP_NAME: MachineOwner
>
> FAILURE_BUCKET_ID: 0xCA_1_IMAGE_usbccgp.sys_DATE_2004_08_04
>
> BUCKET_ID: 0xCA_1_IMAGE_usbccgp.sys_DATE_2004_08_04
>
> Followup: MachineOwner
> ---------
>
> 1: kd> lmvm usbccgp
> start end module name
> bac68000 bac6fb80 usbccgp (pdb symbols)
> C:\WINDDK\Symbols\free\xpsp2\sys\usbccgp.pdb
> Loaded symbol image file: usbccgp.sys
> Image path: \SystemRoot\system32\DRIVERS\usbccgp.sys
> Image name: usbccgp.sys
> Timestamp: Wed Aug 04 08:08:45 2004 (41107D6D)
> CheckSum: 00013C1C
> ImageSize: 00007B80
> Translations: 0000.04b0 0000.04e0 0409.04b0 0409.04e0
>
> Does anybody has a idea what’s going wrong?
>
> Thanks, patric
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>


Mark Roddy

My guess is that your 2 devices are reporting that they have a serial number, but both devices do not have unique values; that both are reporting the same serial. Each serial number must be unique

d

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of xxxxx@carag.com
Sent: Thursday, May 15, 2008 8:05 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] Duplicate PDO at usbccgp.sys

Hi everybody

I have a problem with my USB driver for a proprietary device. Everything works fine, until I connect two identical devices to two different USB host controller on the same PC. In this case the computer crashes with a PNP_DETECTED_FATAL_ERROR. There is no problem if both devices are connected to the same host controller. I’ve tested it on Windows XP SP2.

The device is a composite device with the following interfaces:

Interface 0: Storage Device
Interface 1: HID
Interface 2: Proprietary Interface

This is the corresponding WinDBG output:

1: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************

PNP_DETECTED_FATAL_ERROR (ca)
PnP encountered a severe error, either as a result of a problem in a driver or
a problem in PnP itself. The first argument describes the nature of the
problem, the second argument is the address of the PDO. The other arguments
vary depending on argument 1.
Arguments:
Arg1: 00000001, Duplicate PDO
A specific instance of a driver has enumerated multiple PDOs with
identical device id and unique ids.
Arg2: 899c9570, Newly reported PDO.
Arg3: 89a4b2e8, PDO of which it is a duplicate.
Arg4: 00000000

Debugging Details:

*** No owner thread found for resource 8055a4e0
*** No owner thread found for resource 8055a4e0
*** No owner thread found for resource 8055a4e0
*** No owner thread found for resource 8055a4e0

BUGCHECK_STR: 0xCA_1

DEVICE_OBJECT: 899c9570

DRIVER_OBJECT: 8a1fed78

IMAGE_NAME: usbccgp.sys

DEBUG_FLR_IMAGE_TIMESTAMP: 41107d6d

MODULE_NAME: usbccgp

FAULTING_MODULE: bac68000 usbccgp

DEFAULT_BUCKET_ID: DRIVER_FAULT

PROCESS_NAME: System

LOCK_ADDRESS: 8055a560 – (!locks 8055a560)

Resource @ nt!IopDeviceTreeLock (0x8055a560) Shared 1 owning threads
Threads: 8a6bcda8-01<*>
1 total locks, 1 locks currently held

PNP_TRIAGE:
Lock address : 0x8055a560
Thread Count : 1
Thread address: 0x8a6bcda8
Thread wait : 0xbe6a

LAST_CONTROL_TRANSFER: from 8059084d to 804f9f13

STACK_TEXT:
bad039d4 8059084d 000000ca 00000001 899c9570 nt!KeBugCheckEx+0x1b
bad03ad0 8059100f 8a065b48 8a57b778 8a171350 nt!PipProcessNewDeviceNode+0x5d1
bad03d24 805915de 8a171350 00000001 00000000 nt!PipProcessDevNodeTree+0x16b
bad03d54 804f6970 00000003 8055a5c0 805637bc nt!PiRestartDevice+0x80
bad03d7c 80537aff 00000000 00000000 8a6bcda8 nt!PipDeviceActionWorker+0x168
bad03dac 805cea08 00000000 00000000 00000000 nt!ExpWorkerThread+0xef
bad03ddc 8054546e 80537a10 00000001 00000000 nt!PspSystemThreadStartup+0x34
00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16

STACK_COMMAND: kb

FOLLOWUP_NAME: MachineOwner

FAILURE_BUCKET_ID: 0xCA_1_IMAGE_usbccgp.sys_DATE_2004_08_04

BUCKET_ID: 0xCA_1_IMAGE_usbccgp.sys_DATE_2004_08_04

Followup: MachineOwner

1: kd> lmvm usbccgp
start end module name
bac68000 bac6fb80 usbccgp (pdb symbols) C:\WINDDK\Symbols\free\xpsp2\sys\usbccgp.pdb
Loaded symbol image file: usbccgp.sys
Image path: \SystemRoot\system32\DRIVERS\usbccgp.sys
Image name: usbccgp.sys
Timestamp: Wed Aug 04 08:08:45 2004 (41107D6D)
CheckSum: 00013C1C
ImageSize: 00007B80
Translations: 0000.04b0 0000.04e0 0409.04b0 0409.04e0

Does anybody has a idea what’s going wrong?

Thanks, patric


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

O thanks to both of you. I will check this with our hardware developers…

patric

Doron Holan wrote:

My guess is that your 2 devices are reporting that they have a serial number, but both devices do not have unique values; that both are reporting the same serial. Each serial number must be unique

Yes, I believe that, but as Mark said, surely a blue screen is not the
intended failure mechanism for this situation…


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

> I have a problem with my USB driver for a proprietary device. Everything
works

fine, until I connect two identical devices to two different USB host
controller on the
same PC. In this case the computer crashes with a
PNP_DETECTED_FATAL_ERROR

Devices claim to support unique IDs in the USB config descriptors, but the IDs
are actually not unique.

A device manufacturing error, such an approach is prohibited by USB spec.


Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

“Tim Roberts” wrote in message news:xxxxx@ntdev…
> Doron Holan wrote:
>> My guess is that your 2 devices are reporting that they have a serial
>> number, but both devices do not have unique values; that both are
>> reporting the same serial. Each serial number must be unique
>>
>
> Yes, I believe that, but as Mark said, surely a blue screen is not the
> intended failure mechanism for this situation…
>
> –
> Tim Roberts, xxxxx@probo.com
> Providenza & Boekelheide, Inc.

yes, really… now crashing any Windows machine is easy - just
make two devices with same serial and plug them in. bummer.

Regards,
–PA

Pavel A. wrote:

yes, really… now crashing any Windows machine is easy - just
make two devices with same serial and plug them in. bummer.

Well, two *composite* devices. I think you will get a balloon tip if you plug in two single-function devices with the same serial number.

Maxim S. Shatskih wrote:

A device manufacturing error, such an approach is prohibited by USB spec.

Forbidden or not, it should not crash the box.

At 09:19 16/05/2008, you wrote:

Maxim S. Shatskih wrote:
>A device manufacturing error, such an approach is prohibited by USB spec.

Forbidden or not, it should not crash the box.

I know it shouldn’t, but it sounds very similar to a crash I
generated the other week. A rapid cycle of creating and destroying a
disk caused PNP to crash because it thought there were two objects
with the same ID in the system.

Rather worryingly the condition persisted after a reboot and the
crash re-occured during the boot process. This was only resolved by
disabling the disk.

I know it’s two different stacks, but the OP’s PNP error message and
dump analysis was exactly the same as I saw complaining about
duplicate PDOs. So it looks like there is a planned crash in PNP
when this happens.

Mark.

Mark S. Edwards wrote:

So it looks like there is a planned crash in PNP when this happens.

http://msdn.microsoft.com/en-us/library/aa511335.aspx

cf. “13. Avoid bad experiences”

'nuff said…