本论坛为只读模式,仅供查阅,不能注册新用户,不能发帖/回帖,有问题可发邮件 xikug.xp (^) gmail.com
查看: 2839|回复: 2

crash dump file  analysis [复制链接]

Rank: 1

发表于 2010-9-15 19:23:04 |显示全部楼层
当前的驱动为WTPTP.sys,出现问题,分析dump文件如下:
1: kd> !analyze -v
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

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: 00000020, a pool block header size is corrupt.
Arg2: 87289b08, The pool entry we were looking for within the page.
Arg3: 87289b18, The next pool entry.
Arg4: 1a020001, (reserved)

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

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

*************************************************************************
***                                                                   ***
***                                                                   ***
***    Your debugger is not using the correct symbols                 ***
***                                                                   ***
***    In order for this command to work properly, your symbol path   ***
***    must point to .pdb files that have full type information.      ***
***                                                                   ***
***    Certain .pdb files (such as the public OS symbols) do not      ***
***    contain the required information.  Contact the group that      ***
***    provided you with these symbols if you need this command to    ***
***    work.                                                          ***
***                                                                   ***
***    Type referenced: nt!_KPRCB                                     ***
***                                                                   ***
*************************************************************************
*************************************************************************
***                                                                   ***
***                                                                   ***
***    Your debugger is not using the correct symbols                 ***
***                                                                   ***
***    In order for this command to work properly, your symbol path   ***
***    must point to .pdb files that have full type information.      ***
***                                                                   ***
***    Certain .pdb files (such as the public OS symbols) do not      ***
***    contain the required information.  Contact the group that      ***
***    provided you with these symbols if you need this command to    ***
***    work.                                                          ***
***                                                                   ***
***    Type referenced: nt!KPRCB                                      ***
***                                                                   ***
*************************************************************************
*************************************************************************
***                                                                   ***
***                                                                   ***
***    Your debugger is not using the correct symbols                 ***
***                                                                   ***
***    In order for this command to work properly, your symbol path   ***
***    must point to .pdb files that have full type information.      ***
***                                                                   ***
***    Certain .pdb files (such as the public OS symbols) do not      ***
***    contain the required information.  Contact the group that      ***
***    provided you with these symbols if you need this command to    ***
***    work.                                                          ***
***                                                                   ***
***    Type referenced: nt!_KPRCB                                     ***
***                                                                   ***
*************************************************************************
*************************************************************************
***                                                                   ***
***                                                                   ***
***    Your debugger is not using the correct symbols                 ***
***                                                                   ***
***    In order for this command to work properly, your symbol path   ***
***    must point to .pdb files that have full type information.      ***
***                                                                   ***
***    Certain .pdb files (such as the public OS symbols) do not      ***
***    contain the required information.  Contact the group that      ***
***    provided you with these symbols if you need this command to    ***
***    work.                                                          ***
***                                                                   ***
***    Type referenced: nt!KPRCB                                      ***
***                                                                   ***
*************************************************************************
*************************************************************************
***                                                                   ***
***                                                                   ***
***    Your debugger is not using the correct symbols                 ***
***                                                                   ***
***    In order for this command to work properly, your symbol path   ***
***    must point to .pdb files that have full type information.      ***
***                                                                   ***
***    Certain .pdb files (such as the public OS symbols) do not      ***
***    contain the required information.  Contact the group that      ***
***    provided you with these symbols if you need this command to    ***
***    work.                                                          ***
***                                                                   ***
***    Type referenced: nt!_KPRCB                                     ***
***                                                                   ***
*************************************************************************
*************************************************************************
***                                                                   ***
***                                                                   ***
***    Your debugger is not using the correct symbols                 ***
***                                                                   ***
***    In order for this command to work properly, your symbol path   ***
***    must point to .pdb files that have full type information.      ***
***                                                                   ***
***    Certain .pdb files (such as the public OS symbols) do not      ***
***    contain the required information.  Contact the group that      ***
***    provided you with these symbols if you need this command to    ***
***    work.                                                          ***
***                                                                   ***
***    Type referenced: nt!_KPRCB                                     ***
***                                                                   ***
*************************************************************************
*************************************************************************
***                                                                   ***
***                                                                   ***
***    Your debugger is not using the correct symbols                 ***
***                                                                   ***
***    In order for this command to work properly, your symbol path   ***
***    must point to .pdb files that have full type information.      ***
***                                                                   ***
***    Certain .pdb files (such as the public OS symbols) do not      ***
***    contain the required information.  Contact the group that      ***
***    provided you with these symbols if you need this command to    ***
***    work.                                                          ***
***                                                                   ***
***    Type referenced: nt!_KPRCB                                     ***
***                                                                   ***
*************************************************************************

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: WTPTP

FAULTING_MODULE: 804d7000 nt

DEBUG_FLR_IMAGE_TIMESTAMP:  4c7d46ca

BUGCHECK_STR:  0x19_20

POOL_ADDRESS:  87289b08

CUSTOMER_CRASH_COUNT:  2

DEFAULT_BUCKET_ID:  DRIVER_FAULT

LAST_CONTROL_TRANSFER:  from 80550fc5 to 805373ca

STACK_TEXT:  
WARNING: Stack unwind information not available. Following frames may be wrong.
a664a9a8 80550fc5 00000019 00000020 87289b08 nt+0x603ca
a664a9f8 804f2c3f 87289b10 00000000 862d68d0 nt+0x79fc5
a664aa50 804f2dd5 862d68d0 a664aa9c a664aa90 nt+0x1bc3f
a664aaa0 806ffef2 00000000 00000000 a664aab8 nt+0x1bdd5
a664aab8 806ffae4 badb0d00 00000000 00000000 hal+0x2ef2
a664ab48 804f2def 862d68d0 85e7ff90 00000000 hal+0x2ae4
a664ab7c a586d1cb 0000001c 00000001 00000001 nt+0x1bdef
a664ac40 804e13eb 85ab7018 862d6890 806ff410 WTPTP!WTPUSB_ProcessIOCTL+0x1b2b [f:\sie_tools_release_3_2_18_rc1\tools\usbdriver\wtpdfu.c @ 1309]
a664ac64 8058041c 85ab7018 862d6890 85e7ff90 nt+0xa3eb
a664ad00 80586f48 000017b0 00000000 00000000 nt+0xa941c
a664ad34 804dd99f 000017b0 00000000 00000000 nt+0xaff48
a664ad64 7c90e514 badb0d00 001294d0 a737bd98 nt+0x699f
a664ad68 badb0d00 001294d0 a737bd98 a737bdcc 0x7c90e514
a664ad6c 001294d0 a737bd98 a737bdcc 00000000 0xbadb0d00
a664ad70 a737bd98 a737bdcc 00000000 00000000 0x1294d0
a664ad74 a737bdcc 00000000 00000000 00000000 0xa737bd98
a664ad78 00000000 00000000 00000000 00000000 0xa737bdcc


STACK_COMMAND:  kb

FOLLOWUP_IP:
WTPTP!WTPUSB_ProcessIOCTL+1b2b [f:\sie_tools_release_3_2_18_rc1\tools\usbdriver\wtpdfu.c @ 1309]
a586d1cb ??              ???

FAULTING_SOURCE_CODE:  
  1305:     if (bCompleteIrp)
  1306:     {
  1307:         Irp->IoStatus.Status = ntStatus;
  1308:         IoCompleteRequest (Irp, IO_NO_INCREMENT);
> 1309:         WTPUSB_DecrementIoCount(DeviceObject);
  1310:     }
  1311:     
  1312:     DBGHDR_KdPrint(DBGMASK_TRACE, ("WTPUSB_ProcessIOCTL() exiting with %x\n", ntStatus));
  1313:     return ntStatus;
  1314: }


SYMBOL_STACK_INDEX:  7

SYMBOL_NAME:  WTPTP!WTPUSB_ProcessIOCTL+1b2b

FOLLOWUP_NAME:  MachineOwner

IMAGE_NAME:  WTPTP.sys

BUCKET_ID:  WRONG_SYMBOLS

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

1: kd> .reload
Unable to load image ntoskrnl.exe, Win32 error 0n2
*** WARNING: Unable to verify timestamp for ntoskrnl.exe
*** ERROR: Module load completed but symbols could not be loaded for ntoskrnl.exe
Loading Kernel Symbols
...............................................................
................................................................
..................
Loading User Symbols
Loading unloaded module list
............................................
1: kd> !analyze -v
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

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: 00000020, a pool block header size is corrupt.
Arg2: 87289b08, The pool entry we were looking for within the page.
Arg3: 87289b18, The next pool entry.
Arg4: 1a020001, (reserved)

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

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


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: WTPTP

FAULTING_MODULE: 804d7000 nt

DEBUG_FLR_IMAGE_TIMESTAMP:  4c7d46ca

BUGCHECK_STR:  0x19_20

POOL_ADDRESS:  87289b08

CUSTOMER_CRASH_COUNT:  2

DEFAULT_BUCKET_ID:  DRIVER_FAULT

LAST_CONTROL_TRANSFER:  from 80550fc5 to 805373ca

STACK_TEXT:  
WARNING: Stack unwind information not available. Following frames may be wrong.
a664a9a8 80550fc5 00000019 00000020 87289b08 nt+0x603ca
a664a9f8 804f2c3f 87289b10 00000000 862d68d0 nt+0x79fc5
a664aa50 804f2dd5 862d68d0 a664aa9c a664aa90 nt+0x1bc3f
a664aaa0 806ffef2 00000000 00000000 a664aab8 nt+0x1bdd5
a664aab8 806ffae4 badb0d00 00000000 00000000 hal+0x2ef2
a664ab48 804f2def 862d68d0 85e7ff90 00000000 hal+0x2ae4
a664ab7c a586d1cb 0000001c 00000001 00000001 nt+0x1bdef
a664ac40 804e13eb 85ab7018 862d6890 806ff410 WTPTP!WTPUSB_ProcessIOCTL+0x1b2b [f:\sie_tools_release_3_2_18_rc1\tools\usbdriver\wtpdfu.c @ 1309]
a664ac64 8058041c 85ab7018 862d6890 85e7ff90 nt+0xa3eb
a664ad00 80586f48 000017b0 00000000 00000000 nt+0xa941c
a664ad34 804dd99f 000017b0 00000000 00000000 nt+0xaff48
a664ad64 7c90e514 badb0d00 001294d0 a737bd98 nt+0x699f
a664ad68 badb0d00 001294d0 a737bd98 a737bdcc 0x7c90e514
a664ad6c 001294d0 a737bd98 a737bdcc 00000000 0xbadb0d00
a664ad70 a737bd98 a737bdcc 00000000 00000000 0x1294d0
a664ad74 a737bdcc 00000000 00000000 00000000 0xa737bd98
a664ad78 00000000 00000000 00000000 00000000 0xa737bdcc


STACK_COMMAND:  kb

FOLLOWUP_IP:
WTPTP!WTPUSB_ProcessIOCTL+1b2b [f:\sie_tools_release_3_2_18_rc1\tools\usbdriver\wtpdfu.c @ 1309]
a586d1cb ??              ???

FAULTING_SOURCE_CODE:  
  1305:     if (bCompleteIrp)
  1306:     {
  1307:         Irp->IoStatus.Status = ntStatus;
  1308:         IoCompleteRequest (Irp, IO_NO_INCREMENT);
> 1309:         WTPUSB_DecrementIoCount(DeviceObject);
  1310:     }
  1311:     
  1312:     DBGHDR_KdPrint(DBGMASK_TRACE, ("WTPUSB_ProcessIOCTL() exiting with %x\n", ntStatus));
  1313:     return ntStatus;
  1314: }


SYMBOL_STACK_INDEX:  7

SYMBOL_NAME:  WTPTP!WTPUSB_ProcessIOCTL+1b2b

FOLLOWUP_NAME:  MachineOwner

IMAGE_NAME:  WTPTP.sys

BUCKET_ID:  WRONG_SYMBOLS

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


WTPUSB_DecrementIoCount(DeviceObject)的代码如下:
LONG
WTPUSB_DecrementIoCount(
    IN PDEVICE_OBJECT DeviceObject
)
/*++

Routine Description:

    We keep a pending IO count ( extension->PendingIoCount )  in the device extension.
    The first increment of this count is done on adding the device.
    Subsequently, the count is incremented for each new IRP received and
    decremented when each IRP is completed or passed on.

    Transition to 'one' therefore indicates no IO is pending and signals
    deviceExtension->NoPendingIoEvent. This is needed for processing
    IRP_MN_QUERY_REMOVE_DEVICE

    Transition to 'zero' signals an event ( deviceExtension->RemoveEvent )
    to enable device removal. This is used in processing for IRP_MN_REMOVE_DEVICE

    This code is non-pageable.

Arguments:

    DeviceObject -- ptr to our FDO

Return Value:

    deviceExtension->PendingIoCount


--*/

{
    PFDO_DEVICE_EXTENSION FDODeviceExtension = NULL;
    LONG ioCount = 0;

    DBGHDR_ASSERT(NULL != DeviceObject);
    FDODeviceExtension = DeviceObject->DeviceExtension;
    DBGHDR_ASSERT( ((PCOMMON_DEVICE_EXTENSION)FDODeviceExtension)->isFDO );

    ioCount = InterlockedDecrement(&FDODeviceExtension->PendingIoCount);

    DBGHDR_KdPrint(DBGMASK_TRACE,("WTPUSB_DecrementIoCount() Pending io count = %x\n", ioCount));
    DBGHDR_ASSERT(-1 < ioCount);

    if (1 == ioCount)
    {
        // trigger no pending io
        DBGHDR_KdPrint(DBGMASK_TRACE,("WTPUSB_DecrementIoCount() setting NoPendingIoEvent\n"));
        KeSetEvent(&FDODeviceExtension->NoPendingIoEvent,
                   1,
                   FALSE);
    }

    if (0 == ioCount)
    {
        // trigger remove-device event
        DBGHDR_KdPrint(DBGMASK_TRACE,("WTPUSB_DecrementIoCount() setting RemoveEvent\n"));
        KeSetEvent(&FDODeviceExtension->RemoveEvent,
                   1,
                   FALSE);
    }

    return ioCount;
}

这个函数就是记录irp的peng count的,好像没发现可疑的情况
另外我有个疑问就是为什么会断在这里:
> 1309:         WTPUSB_DecrementIoCount(DeviceObject);
如果真的是WTPUSB_DecrementIoCount(DeviceObject)函数除了问题,也应该断到函数里面具体的出错地方?十分不解,忘达人指点。。。

Rank: 1

发表于 2010-9-15 19:37:42 |显示全部楼层
看样子倒是IoCompleteRequest (Irp, IO_NO_INCREMENT);过程中出了问题.

Rank: 1

发表于 2010-9-16 02:32:32 |显示全部楼层
引用第1楼KiSSinGGer于2010-09-15 16:37发表的  :
看样子倒是IoCompleteRequest (Irp, IO_NO_INCREMENT);过程中出了问题.
IoCompleteRequest 函数不是系统函数吗?Irp非空的话咋会出问题呢?疑惑啊。。。
您需要登录后才可以回帖 登录 | 立即加入

Archiver|手机版|第8个男人 - 论坛为只读模式,仅供查阅

GMT+8, 2019-6-26 14:59 , Processed in 0.021312 second(s), 8 queries .

Design by pvo.cn

© 2011 Pvo Inc.

回顶部