none
usbhub.sys蓝屏问题 RRS feed

  • 问题

  • 计算机系统 windows server2008 r2 standard(x64),突然蓝屏,抓取dump文件分析后应该是由于usbhub.sys文件引起的,usb的驱动程序文件。具体分析结果见后面

    请帮忙确认一下是否是这个问题,如果是这个文件导致的,应该如何处理?

    通过下面的分析结果,还能得出一些什么有用的信息?

    dump文件分析结果如下:

    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: 0000000000000001, Duplicate PDO                                                                   ---(这里请教一下 PDO 是什么东西?)
    A specific instance of a driver has enumerated multiple PDOs with
    identical device id and unique ids.
    Arg2: fffffa800be97440, Newly reported PDO.
    Arg3: fffffa800c237440, PDO of which it is a duplicate.
    Arg4: 0000000000000000

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


    BUGCHECK_STR:  0xCA_1

    DEVICE_OBJECT: fffffa800be97440

    DRIVER_OBJECT: fffffa8005456b50

    IMAGE_NAME:  usbhub.sys

    DEBUG_FLR_IMAGE_TIMESTAMP:  4a5bcc2d

    MODULE_NAME: usbhub

    FAULTING_MODULE: fffff88004524000 usbhub

    DEFAULT_BUCKET_ID:  WIN7_DRIVER_FAULT

    PROCESS_NAME:  System

    CURRENT_IRQL:  0

    LOCK_ADDRESS:  fffff80001ad2400 -- (!locks fffff80001ad2400)

    Resource @ nt!PiEngineLock (0xfffff80001ad2400)    Exclusively owned
        Contention Count = 176
         Threads: fffffa80036cd680-01<*> 
    1 total locks, 1 locks currently held

    PNP_TRIAGE: 
    Lock address  : 0xfffff80001ad2400
    Thread Count  : 1
    Thread address: 0xfffffa80036cd680
    Thread wait   : 0x5d7a082e

    LAST_CONTROL_TRANSFER:  from fffff80001cbb117 to fffff800018cff00

    STACK_TEXT:  
    fffff880`0219e778 fffff800`01cbb117 : 00000000`000000ca 00000000`00000001 fffffa80`0be97440 fffffa80`0c237440 : nt!KeBugCheckEx
    fffff880`0219e780 fffff800`01cbbef8 : fffffa80`03ea3290 fffffa80`14f13010 fffffa80`03ea3290 00000000`00000001 : nt!PiProcessNewDeviceNode+0x587
    fffff880`0219e950 fffff800`01cbc438 : fffff800`01acfd80 00000000`00000000 00000000`00000001 fffff800`01b3c71c : nt!PipProcessDevNodeTree+0x2e8
    fffff880`0219ebc0 fffff800`019d0347 : 00000001`00000003 00000000`00000000 00000000`00000001 00000000`00000000 : nt!PiProcessReenumeration+0x98
    fffff880`0219ec10 fffff800`018dd161 : fffff800`019d0020 fffff800`01bc9501 fffffa80`036cd600 fffffa80`036cd680 : nt!PnpDeviceActionWorker+0x327
    fffff880`0219ecb0 fffff800`01b73166 : 00000000`00000000 fffffa80`036cd680 00000000`00000080 fffffa80`036c0040 : nt!ExpWorkerThread+0x111
    fffff880`0219ed40 fffff800`018ae486 : fffff880`01f3c180 fffffa80`036cd680 fffff880`01f470c0 00000000`00000000 : nt!PspSystemThreadStartup+0x5a
    fffff880`0219ed80 00000000`00000000 : fffff880`0219f000 fffff880`02199000 fffff880`0219e9f0 00000000`00000000 : nt!KiStartSystemThread+0x16


    STACK_COMMAND:  kb

    FOLLOWUP_NAME:  MachineOwner

    FAILURE_BUCKET_ID:  X64_0xCA_1_IMAGE_usbhub.sys

    BUCKET_ID:  X64_0xCA_1_IMAGE_usbhub.sys

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

    2012年7月25日 12:48

答案

全部回复

  • PDO ---> Physical Device Object

    Duplicate PDO ---> A specific instance of a driver has enumerated multiple PDOs with identical device ID and unique IDs.

    看一下有没有资源冲突

    http://msdn.microsoft.com/en-us/library/windows/hardware/ff539083(v=vs.85).aspx


    2012年7月25日 13:09
  • 查看资源冲突,是需要在生成dump文件的计算机上查看,还是在dump文件中分析查看(我使用的windug工具分析的dump文件)?

    我在windug(不是生成dump文件的计算机)中运行  !arbiter 1 命令后,结果如下:

    kd> !arbiter 1
    Could not read arbiter entry fffff8a0001ae2c0 for devnode fffffa8003719d90
          Could not read arbiter entry fffff8a0001dc680 for devnode fffffa80038f9010

            DEVNODE fffffa8003929750 (PCI\VEN_8086&DEV_3408&SUBSYS_330B103C&REV_13\3&33fd14ca&0&08)
              Port Arbiter "PCI I/O Port (b=5)" at fffffa800393b010
                Allocated ranges:
                  0000000000000000 - 0000000000003fff       00000000 <Not on bus>
                  0000000000005000 - ffffffffffffffff       00000000 <Not on bus>
                Possible allocation:
                  < none >

            DEVNODE fffffa800392e610 (PCI\VEN_8086&DEV_3A48&SUBSYS_330D103C&REV_00\3&33fd14ca&0&E4)
              Port Arbiter "PCI I/O Port (b=2)" at fffffa8003941010
                Allocated ranges:
                  0000000000000000 - 0000000000002fff       00000000 <Not on bus>
                  0000000000003000 - 00000000000030ff     P fffffa8003942060  (hpqilo3core)
                  0000000000003400 - 00000000000034ff     P fffffa8003942060  (hpqilo3core)
                  0000000000003800 - 00000000000038ff     P fffffa8003942a20  (hpqilo3chif)
                  0000000000003c00 - 0000000000003c1f     P fffffa8003943060  (usbuhci)
                  0000000000004000 - ffffffffffffffff       00000000 <Not on bus>
                Possible allocation:
                  < none >

            DEVNODE fffffa800392f610 (PCI\VEN_8086&DEV_244E&SUBSYS_330D103C&REV_90\3&33fd14ca&0&F0)
              Port Arbiter "PCI I/O Port (b=1)" at fffffa8003944010
                Allocated ranges:
                  0000000000000000 - 0000000000001fff       00000000 <Not on bus>
                  0000000000002000 - 00000000000020ff     P fffffa8003949060  (ati2mtag)
                  0000000000003000 - ffffffffffffffff       00000000 <Not on bus>
                Possible allocation:
                  < none >
    • 已编辑 莫名l 2012年7月25日 13:52
    2012年7月25日 13:31
  • 应该看dump就可以。

    BugCheck的两个参数就是冲突的设备

    !devobj 它们两看看都是些什么吧

    Arg2: fffffa800be97440, Newly reported PDO.
    Arg3: fffffa800c237440, PDO of which it is a duplicate.

    也可以上机器去msinfo32里看一下是否有资源冲突
    • 已编辑 Finy 2012年7月25日 13:47
    2012年7月25日 13:46
  • 是使用 ! devobj XXX 命令查看吗?,在你这个帖子的前面我运行了一下   !arbiter 1  命令,结果您可以看一下。

    运行该命令的结果如下,通过下面这些信息,能得出什么有用的结果呢?

    4: kd> ! devobj fffffa800be97440
    Device object (fffffa800be97440) is for:
     USBPDO-10 \Driver\usbhub DriverObject fffffa8005456b50
    Current Irp 00000000 RefCount 0 Type 00000022 Flags 00003040
    Dacl fffff9a100064f51 DevExt fffffa800be97590 DevObjExt fffffa800be97f90 DevNode fffffa8014f13010 
    ExtensionFlags (0x00000810)  DOE_START_PENDING, DOE_DEFAULT_SD_PRESENT
    Characteristics (0000000000)  
    Device queue is not busy.

    4: kd> ! devobj fffffa800c237440
    Device object (fffffa800c237440) is for:
     USBPDO-7 \Driver\usbhub DriverObject fffffa8005456b50
    Current Irp 00000000 RefCount 0 Type 00000022 Flags 00003040
    Dacl fffff9a100064f51 DevExt fffffa800c237590 DevObjExt fffffa800c237f90 DevNode fffffa800a30a690 
    ExtensionFlags (0x00000810)  DOE_START_PENDING, DOE_DEFAULT_SD_PRESENT
    Characteristics (0000000000)  
    Device queue is not busy.

    2012年7月25日 13:58
  • 这些Driver方面的Debugging我也不熟,也得研究一下。

    你能把你的dump share出来吗?是kernel dump吧?压缩一下弄出来吧。

    此外,发生这个蓝屏的场景是什么?是否当时有USB设备插入拔出?

    另,有一个已知问题看看是否符合你的场景:

    Stop error code 0x000000CA (PNP_DETECTED_FATAL_ERROR) is generated on a Windows Server 2008 R2-based computer

    http://support.microsoft.com/kb/980856

    还有,这篇KB898446提示我们: 相同Plug and Play ID的设备,如果驱动程序在不能正常处理这种情况,会引起这种蓝屏。

    http://support.microsoft.com/kb/898446

    不过你现在是08 R2这么先进的系统,它的usbhub.sys不该漏了对Same ID的处理。。。但是osronline里也有说法,USB设备的ID相同,逻辑就是不处理,直接Crash,因为这是不允许发生的!

    http://www.osronline.com/showThread.CFM?link=131368

    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.

    • 已编辑 Finy 2012年7月26日 3:06
    2012年7月26日 1:51
  • 是使用 ! devobj XXX 命令查看吗?,在你这个帖子的前面我运行了一下   !arbiter 1  命令,结果您可以看一下。

    运行该命令的结果如下,通过下面这些信息,能得出什么有用的结果呢?

    4: kd> ! devobj fffffa800be97440
    Device object (fffffa800be97440) is for:
     USBPDO-10 \Driver\usbhub DriverObject fffffa8005456b50
    Current Irp 00000000 RefCount 0 Type 00000022 Flags 00003040
    Dacl fffff9a100064f51 DevExt fffffa800be97590 DevObjExt fffffa800be97f90 DevNode fffffa8014f13010 
    ExtensionFlags (0x00000810)  DOE_START_PENDING, DOE_DEFAULT_SD_PRESENT
    Characteristics (0000000000)  
    Device queue is not busy.

    4: kd> ! devobj fffffa800c237440
    Device object (fffffa800c237440) is for:
     USBPDO-7 \Driver\usbhub DriverObject fffffa8005456b50
    Current Irp 00000000 RefCount 0 Type 00000022 Flags 00003040
    Dacl fffff9a100064f51 DevExt fffffa800c237590 DevObjExt fffffa800c237f90 DevNode fffffa800a30a690 
    ExtensionFlags (0x00000810)  DOE_START_PENDING, DOE_DEFAULT_SD_PRESENT
    Characteristics (0000000000)  
    Device queue is not busy.

    来,这么看一下,把它们的DevNode的实例路径打印出来

    dt _DEVICE_NODE fffffa8014f13010 instancepath

    dt _DEVICE_NODE fffffa800a30a690 instancepath

    你会看到这两冲突设备的UNICODE文本标识


    • 已编辑 Finy 2012年7月26日 2:30
    2012年7月26日 2:28
  • 是 kernel dump,不是很方便将dump共享出来,不好意思。机器放在机房,当时应该是没有任何操作。该计算机也没有安装Hyper-v。

    DevNode的实例路径打印结果如下,文本标识都是相同的,怎么理解?是不是在这种情况下应该是不同的才符合该问题状况?

    4: kd> dt _DEVICE_NODE fffffa8014f13010 instancepath
    nt!_DEVICE_NODE
       +0x028 InstancePath : _UNICODE_STRING "USB\VID_04B3&PID_3025\5&12dde233&0&1"
    4: kd> dt _DEVICE_NODE fffffa800a30a690 instancepath
    nt!_DEVICE_NODE
       +0x028 InstancePath : _UNICODE_STRING "USB\VID_04B3&PID_3025\5&12dde233&0&1"


    还有,根据这两冲突设备的UNICODE文本标识,能得出什么有用的信息?能找到具体的硬件吗?
    • 已编辑 莫名l 2012年7月26日 14:34
    2012年7月26日 14:28
  • 这就指明了特定硬件 VID_04B3&PID_3025

    VID 04B3是IBM的,PID代表什么产品,我没查到,Google了一下好像是什么USB NetVista Full Width Keyboard,你看看是不是你认识的东西?

    貌似这里提到了这个设备的多实例冲突问题,并提供的驱动更新:

    http://devicehappy.info/solved-usb-netvista-full-width-keyboard-driver-update-download/usb-drivers/usb-driver-update-145/

    USB NetVista Full Width Keyboard driver struggles appear relating to different instances

    Soon after USB NetVista Full Width Keyboard driver troubles arise, your pc’s equilibrium is certainly jeopardized, and your system is prone to laptop or computer failures

    • 已编辑 Finy 2012年7月27日 4:04
    2012年7月27日 3:33
  • 一个设备多个实例?这个不太理解,多个实例,指的是什么?驱动?

    这个问题,如果要解决的话,在 设备管理器 里面,将 通用串行总线控制器 下的硬件全部卸载,然后让其重新扫描,是不是造成冲突的设备的驱动就不存在了?

    还是有什么其他的方法?

    有必要为该设备升级驱动吗?

    • 已编辑 莫名l 2012年7月27日 10:14
    2012年7月27日 10:10
  • 这个应该是该设备驱动的BUG,当它被卸载时,没能删除PDO,从而下次再接上时产生重复。
    2012年7月27日 10:31
  • 计算机蓝屏的时候,并没有去接任何设备(鼠标、键盘等),只是发现计算机出现问题后,才去接的鼠标键盘

    2012年7月27日 14:26
  • 计算机蓝屏的时候,并没有去接任何设备(鼠标、键盘等),只是发现计算机出现问题后,才去接的鼠标键盘

    先确定一下你机器上USB\VID_04B3&PID_3025这个设备到底是什么?

    是那什么USB NetVista Full Width Keyboard吗?


    另外,你说 “发现计算机出现问题后,才去接的鼠标键盘” ,你确认你是先看到蓝屏,之后再接的USB设备吗?也就是你先接了显示器,看到了蓝屏,然后你又接键盘鼠标,是这样?
    • 已编辑 Finy 2012年7月30日 3:12
    2012年7月30日 3:10