DRIVER_POWER_STATE_FAILURE蓝屏分析

本文主要对

DRIVER_POWER_STATE_FAILURE蓝屏分析_xdesk的专栏-CSDN博客_driver_power_state_failure

的一些说明,大佬写得太跳跃了,一些地方不明白,记录一下。不过仍然还是存在一些不明白的地方。

 1、先 !analyze -v看一些诊断信息

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

DRIVER_POWER_STATE_FAILURE (9f)
A driver has failed to complete a power IRP within a specific time.
Arguments:
Arg1: 0000000000000004, The power transition timed out waiting to synchronize with the Pnp
	subsystem.
Arg2: 000000000000012c, Timeout in seconds.
Arg3: ffffb10213b0d040, The thread currently holding on to the Pnp lock.
Arg4: fffff80056879800, nt!TRIAGE_9F_PNP on Win7 and higher

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

Implicit thread is now ffffb102`13b0d040

KEY_VALUES_STRING: 1

    Key  : Analysis.CPU.mSec
    Value: 3499

    Key  : Analysis.DebugAnalysisManager
    Value: Create

    Key  : Analysis.Elapsed.mSec
    Value: 3513

    Key  : Analysis.Init.CPU.mSec
    Value: 92983

    Key  : Analysis.Init.Elapsed.mSec
    Value: 7591075

    Key  : Analysis.Memory.CommitPeak.Mb
    Value: 112

    Key  : Hardware.HardwareID
    Value: SWD\MSRRAS

    Key  : WER.OS.Branch
    Value: rs5_release

    Key  : WER.OS.Timestamp
    Value: 2018-09-14T14:34:00Z

    Key  : WER.OS.Version
    Value: 10.0.17763.1


FILE_IN_CAB:  MEMORY.DMP

BUGCHECK_CODE:  9f

BUGCHECK_P1: 4

BUGCHECK_P2: 12c

BUGCHECK_P3: ffffb10213b0d040

BUGCHECK_P4: fffff80056879800

DRVPOWERSTATE_SUBCODE:  4

HARDWARE_ID:  SWD\MSRRAS

FAULTING_THREAD:  ffffb10213b0d040

BLACKBOXBSD: 1 (!blackboxbsd)


BLACKBOXPNP: 1 (!blackboxpnp)


PROCESS_NAME:  System

LOCK_ADDRESS:  fffff80054235cc0 -- (!locks fffff80054235cc0)

Resource @ nt!PiEngineLock (0xfffff80054235cc0)    Exclusively owned
    Contention Count = 32
    NumberOfExclusiveWaiters = 3
     Threads: ffffb10213b0d040-01<*> 

     Threads Waiting On Exclusive Access:
              ffffb10221df5040       ffffb10220ecc040       ffffb1021e249080       
1 total locks

PNP_TRIAGE_DATA: 
	Lock address  : 0xfffff80054235cc0
	Thread Count  : 1
	Thread address: 0xffffb10213b0d040
	Thread wait   : 0x12ca7

STACK_TEXT:  
ffffa489`1902eec0 fffff800`53e2f467     : ffffb102`13b0d040 00000000`00000000 ffff9301`70989200 00000000`00000001 : nt!KiSwapContext+0x76
ffffa489`1902f000 fffff800`53e2efd9     : ffffb102`13b0d040 00000000`00000000 ffffb102`13b0d140 ffffb102`13b0d040 : nt!KiSwapThread+0x297
ffffa489`1902f0c0 fffff800`53e2dd60     : ffff8cdd`b9b93600 ffff8287`00000000 ffff8287`00000000 ffffa489`1902f1d1 : nt!KiCommitThreadWait+0x549
ffffa489`1902f160 fffff800`598a4370     : ffffb102`204d05d8 fffff800`00000000 ffffb102`204cf100 00000000`00000000 : nt!KeWaitForSingleObject+0x520
ffffa489`1902f230 fffff800`59883d93     : ffffb102`13b0d360 fffff800`53e36e49 ffffb102`13b0d040 ffff8287`d909cad8 : NDIS!KWaitEventBase<wistd::integral_constant<enum _EVENT_TYPE,0> >::Wait+0x28
ffffa489`1902f270 fffff800`5986278d     : ffff8287`e86c1d70 fffff800`59862770 ffff8287`d9388a68 ffffb102`204cf1a0 : NDIS!Ndis::BindEngine::ApplyBindChanges+0x14a03
ffffa489`1902f2c0 fffff800`5986e580     : ffff8287`e86c1db0 fffff800`59862770 ffff8287`d9388a68 ffffb102`204cf1a0 : NDIS!<lambda_adb42f86cf839cbbe3c588eaa9665cd9>::<lambda_invoker_cdecl>+0x1d
ffffa489`1902f2f0 fffff800`5986e4c5     : 00000000`00000000 ffffb102`201989b0 00000000`00000000 ffff8287`d9388a60 : NDIS!NDIS_BIND_DRIVER_BASE::ForEachLink+0xa4
ffffa489`1902f340 fffff800`5987ce57     : 00000000`00000000 ffffb102`137146c0 00000000`00007fff fffff800`5986564d : NDIS!NDIS_BIND_DRIVER_BASE::SetRunningDriverIsReady+0x41
ffffa489`1902f370 fffff800`598c67aa     : ffffb102`208cebe0 ffffa489`1902f458 00000000`00000000 00000000`00000000 : NDIS!NDIS_BIND_PROTOCOL_DRIVER::SetRunningDriver+0x63
ffffa489`1902f3c0 fffff800`5989c9ec     : ffffb102`208cebe0 00000000`00000000 00000000`00000000 00000000`00000000 : NDIS!NdisDeregisterProtocol+0xaa
ffffa489`1902f420 fffff800`527a111a     : 00000000`00000000 00000000`00000000 ffffb102`136bd080 ffffb102`136bd080 : NDIS!NdisDeregisterProtocolDriver+0x3c
ffffa489`1902f450 fffff800`527ac484     : 00000000`00000000 00000000`00000000 ffffa489`1902f680 00000000`00000001 : raspppoe!RasPppoeCleanup+0x66
ffffa489`1902f480 fffff800`5989f8a5     : ffffb102`201989b0 ffffa489`1902f680 00000000`00000000 00000000`00000000 : raspppoe!MpUnload+0x44
ffffa489`1902f4b0 fffff800`598a1e12     : ffffb102`208df9f0 fffff800`53f6d264 ffffb102`208df9f0 ffffa489`1902f660 : NDIS!ndisMInvokeDriverUnload+0x3d
ffffa489`1902f4e0 fffff800`5450133e     : ffffb102`208df9f0 00000000`00000000 ffffa489`1902f680 ffff8287`e7bed150 : NDIS!ndisMUnloadEx+0x72
ffffa489`1902f520 fffff800`54500f61     : ffffb102`208dfb40 00000000`0000007c fffff800`5455ea01 ffffb102`208df9f0 : nt!IopUnloadDriver+0x3c6
ffffa489`1902f650 fffff800`53f5c62d     : ffffb102`208e79e0 ffffd185`ce333680 00000000`0000000a ffffb102`208d09f0 : nt!PnpUnloadAttachedDriver+0x9d
ffffa489`1902f6a0 fffff800`544ddb97     : ffffb102`208e79e0 00000000`00000000 00000000`00000000 00000000`00000008 : nt!PnpRemoveLockedDeviceNode+0x245
ffffa489`1902f700 fffff800`544dd8aa     : 00000000`00000000 ffffa489`1902f780 ffff8287`e8551290 fffff800`53f62690 : nt!PnpDeleteLockedDeviceNode+0x8b
ffffa489`1902f740 fffff800`544da8d9     : ffffb102`1ffd28f0 fffff800`00000002 ffffb102`1bf02290 00000000`00000000 : nt!PnpDeleteLockedDeviceNodes+0xba
ffffa489`1902f7b0 fffff800`544db8c4     : 00000000`00000000 ffffa489`1902f830 ffffb102`1ffd28f0 00000000`00000000 : nt!PipRemoveDevicesInRelationList+0x8d
ffffa489`1902f800 fffff800`544dc929     : ffffb102`1bf02290 00000000`00000001 00000000`00000001 00000000`00000007 : nt!PnpDelayedRemoveWorker+0x114
ffffa489`1902f840 fffff800`53f5cbd8     : 00000000`00000007 00000000`00000001 00000000`00000000 ffffb102`1ffd2ae0 : nt!PnpChainDereferenceComplete+0xfd
ffffa489`1902f870 fffff800`544da174     : ffffb102`22545d40 ffffa489`1902f959 00000000`00000003 00000000`00000001 : nt!PnpIsChainDereferenced+0xac
ffffa489`1902f8f0 fffff800`544deb96     : ffffa489`1902fa00 ffffb102`1ffd2a00 fffff800`543f1000 ffff8287`00000008 : nt!PnpProcessQueryRemoveAndEject+0x42c
ffffa489`1902f9c0 fffff800`543f12f0     : ffff8287`f6749ac0 ffff8287`f6384410 ffff8287`f6384410 00000000`00000000 : nt!PnpProcessTargetDeviceEvent+0xea
ffffa489`1902f9f0 fffff800`53e9c14a     : ffffb102`1366d630 ffffb102`13b0d040 fffff800`543f10e0 ffffb102`18336db0 : nt!PnpDeviceEventWorker+0x210
ffffa489`1902fa70 fffff800`53f30df5     : ffffb102`13b0d040 ffffb102`136bd080 ffffb102`13b0d040 0d000300`28591e16 : nt!ExpWorkerThread+0x16a
ffffa489`1902fb10 fffff800`53fc379c     : ffff9301`708c5180 ffffb102`13b0d040 fffff800`53f30da0 0623013d`26222306 : nt!PspSystemThreadStartup+0x55
ffffa489`1902fb60 00000000`00000000     : ffffa489`19030000 ffffa489`19029000 00000000`00000000 00000000`00000000 : nt!KiStartSystemThread+0x1c


SYMBOL_NAME:  raspppoe!RasPppoeCleanup+66

MODULE_NAME: raspppoe

IMAGE_NAME:  raspppoe.sys

STACK_COMMAND:  .process /r /p 0xffffb102136bd080; .thread 0xffffb10213b0d040 ; kb

BUCKET_ID_FUNC_OFFSET:  66

FAILURE_BUCKET_ID:  0x9F_4_raspppoe!RasPppoeCleanup

OS_VERSION:  10.0.17763.1

BUILDLAB_STR:  rs5_release

OSPLATFORM_TYPE:  x64

OSNAME:  Windows 10

FAILURE_ID_HASH:  {e9804e85-a9ce-852f-0dee-ef9be593a2a4}

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

结合https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/bug-check-0x9f--driver-power-state-failurek

可以看到一些基本的参数

0x4

超时值,以秒为单位。

当前持有即插即用 (PnP) 锁的线程。

nt!TRIAGE_9F_PNP。

等待与 PnP 子系统同步的电源状态转换超时。

 按照msdn上面的说法

kd> dt nt!TRIAGE_9F_PNP 82931b24
       +0x000 Signature        : 0x8001
       +0x002 Revision         : 1
       +0x004 CompletionQueue  : 0x82970e20 _TRIAGE_PNP_DEVICE_COMPLETION_QUEUE
       +0x008 DelayedWorkQueue : 0x829455bc _TRIAGE_EX_WORK_QUEUE

我这个转储文件里 没有这个nt!TRIAGE_9F_PNP  符号,版本是这个

0: kd> vertarget 
Windows 10 Kernel Version 17763 MP (8 procs) Free x64
Product: WinNt, suite: TerminalServer SingleUserTS
Edition build lab: 17763.1.amd64fre.rs5_release.180914-1434

不然可以看这两个队列看到一些信息(怎么看?)

2、上面这个走不通就只能找其他方式了。

看下等待的event信息


0: kd> dt nt!_KEVENT ffffb102`204d05d8
   +0x000 Header           : _DISPATCHER_HEADER
0: kd> dx -id 0,0,ffffb102136bd080 -r1 (*((ntkrnlmp!_DISPATCHER_HEADER *)0xffffb102204d05d8))
(*((ntkrnlmp!_DISPATCHER_HEADER *)0xffffb102204d05d8))                 [Type: _DISPATCHER_HEADER]
    [+0x000] Lock             : 393216 [Type: long]
    [+0x000] LockNV           : 393216 [Type: long]
    [+0x000] Type             : 0x0 [Type: unsigned char]
    [+0x001] Signalling       : 0x0 [Type: unsigned char]
    [+0x002] Size             : 0x6 [Type: unsigned char]
    [+0x003] Reserved1        : 0x0 [Type: unsigned char]
    [+0x000] TimerType        : 0x0 [Type: unsigned char]
    [+0x001] TimerControlFlags : 0x0 [Type: unsigned char]
    [+0x001 ( 0: 0)] Absolute         : 0x0 [Type: unsigned char]
    [+0x001 ( 1: 1)] Wake             : 0x0 [Type: unsigned char]
    [+0x001 ( 7: 2)] EncodedTolerableDelay : 0x0 [Type: unsigned char]
    [+0x002] Hand             : 0x6 [Type: unsigned char]
    [+0x003] TimerMiscFlags   : 0x0 [Type: unsigned char]
    [+0x003 ( 5: 0)] Index            : 0x0 [Type: unsigned char]
    [+0x003 ( 6: 6)] Inserted         : 0x0 [Type: unsigned char]
    [+0x003 ( 7: 7)] Expired          : 0x0 [Type: unsigned char]
    [+0x000] Timer2Type       : 0x0 [Type: unsigned char]
    [+0x001] Timer2Flags      : 0x0 [Type: unsigned char]
    [+0x001 ( 0: 0)] Timer2Inserted   : 0x0 [Type: unsigned char]
    [+0x001 ( 1: 1)] Timer2Expiring   : 0x0 [Type: unsigned char]
    [+0x001 ( 2: 2)] Timer2CancelPending : 0x0 [Type: unsigned char]
    [+0x001 ( 3: 3)] Timer2SetPending : 0x0 [Type: unsigned char]
    [+0x001 ( 4: 4)] Timer2Running    : 0x0 [Type: unsigned char]
    [+0x001 ( 5: 5)] Timer2Disabled   : 0x0 [Type: unsigned char]
    [+0x001 ( 7: 6)] Timer2ReservedFlags : 0x0 [Type: unsigned char]
    [+0x002] Timer2ComponentId : 0x6 [Type: unsigned char]
    [+0x003] Timer2RelativeId : 0x0 [Type: unsigned char]
    [+0x000] QueueType        : 0x0 [Type: unsigned char]
    [+0x001] QueueControlFlags : 0x0 [Type: unsigned char]
    [+0x001 ( 0: 0)] Abandoned        : 0x0 [Type: unsigned char]
    [+0x001 ( 1: 1)] DisableIncrement : 0x0 [Type: unsigned char]
    [+0x001 ( 7: 2)] QueueReservedControlFlags : 0x0 [Type: unsigned char]
    [+0x002] QueueSize        : 0x6 [Type: unsigned char]
    [+0x003] QueueReserved    : 0x0 [Type: unsigned char]
    [+0x000] ThreadType       : 0x0 [Type: unsigned char]
    [+0x001] ThreadReserved   : 0x0 [Type: unsigned char]
    [+0x002] ThreadControlFlags : 0x6 [Type: unsigned char]
    [+0x002 ( 0: 0)] CycleProfiling   : 0x0 [Type: unsigned char]
    [+0x002 ( 1: 1)] CounterProfiling : 0x1 [Type: unsigned char]
    [+0x002 ( 2: 2)] GroupScheduling  : 0x1 [Type: unsigned char]
    [+0x002 ( 3: 3)] AffinitySet      : 0x0 [Type: unsigned char]
    [+0x002 ( 4: 4)] Tagged           : 0x0 [Type: unsigned char]
    [+0x002 ( 5: 5)] EnergyProfiling  : 0x0 [Type: unsigned char]
    [+0x002 ( 6: 6)] SchedulerAssist  : 0x0 [Type: unsigned char]
    [+0x002 ( 7: 7)] ThreadReservedControlFlags : 0x0 [Type: unsigned char]
    [+0x003] DebugActive      : 0x0 [Type: unsigned char]
    [+0x003 ( 0: 0)] ActiveDR7        : 0x0 [Type: unsigned char]
    [+0x003 ( 1: 1)] Instrumented     : 0x0 [Type: unsigned char]
    [+0x003 ( 2: 2)] Minimal          : 0x0 [Type: unsigned char]
    [+0x003 ( 5: 3)] Reserved4        : 0x0 [Type: unsigned char]
    [+0x003 ( 6: 6)] UmsScheduled     : 0x0 [Type: unsigned char]
    [+0x003 ( 7: 7)] UmsPrimary       : 0x0 [Type: unsigned char]
    [+0x000] MutantType       : 0x0 [Type: unsigned char]
    [+0x001] MutantSize       : 0x0 [Type: unsigned char]
    [+0x002] DpcActive        : 0x6 [Type: unsigned char]
    [+0x003] MutantReserved   : 0x0 [Type: unsigned char]
    [+0x004] SignalState      : 0 [Type: long]
    [+0x008] WaitListHead     [Type: _LIST_ENTRY]

;遍历这个list,发现就三个元素
0: kd>  dx -id 0,0,ffffb102136bd080 -r1 (*((ntkrnlmp!_LIST_ENTRY *)0xffffb102204d05e0))
(*((ntkrnlmp!_LIST_ENTRY *)0xffffb102204d05e0))                 [Type: _LIST_ENTRY]
    [+0x000] Flink            : 0xffffb10213b0d180 [Type: _LIST_ENTRY *]
    [+0x008] Blink            : 0xffffb1021c54a1c0 [Type: _LIST_ENTRY *]
0: kd> dx -id 0,0,ffffb102136bd080 -r1 ((ntkrnlmp!_LIST_ENTRY *)0xffffb1021c54a1c0)
((ntkrnlmp!_LIST_ENTRY *)0xffffb1021c54a1c0)                 : 0xffffb1021c54a1c0 [Type: _LIST_ENTRY *]
    [+0x000] Flink            : 0xffffb102204d05e0 [Type: _LIST_ENTRY *]
    [+0x008] Blink            : 0xffffb10213b0d180 [Type: _LIST_ENTRY *]
0: kd> dx -id 0,0,ffffb102136bd080 -r1 ((ntkrnlmp!_LIST_ENTRY *)0xffffb10213b0d180)
((ntkrnlmp!_LIST_ENTRY *)0xffffb10213b0d180)                 : 0xffffb10213b0d180 [Type: _LIST_ENTRY *]
    [+0x000] Flink            : 0xffffb1021c54a1c0 [Type: _LIST_ENTRY *]
    [+0x008] Blink            : 0xffffb102204d05e0 [Type: _LIST_ENTRY *]

;这里是_KTHREAD结构的WaitListEntry的偏移,x64下是140
0: kd> ? 0xffffb10213b0d180-140
Evaluate expression: -86852498304960 = ffffb102`13b0d040
0: kd> ? 0xffffb1021c54a1c0-140
Evaluate expression: -86852353351552 = ffffb102`1c54a080
0: kd> ? 0xffffb102204d05e0-140
Evaluate expression: -86852286741344 = ffffb102`204d04a0

;一个个找线程看栈信息,ffffb102`1c54a080这个线程比较可以,其他的不列举了
0: kd> !thread ffffb102`1c54a080
THREAD ffffb1021c54a080  Cid 1a04.15d4  Teb: 000000bde5fb7000 Win32Thread: 0000000000000000 WAIT: (Executive) KernelMode Non-Alertable
    ffffb102204d05d8  NotificationEvent
IRP List:
    ffffb102202692e0: (0006,0118) Flags: 00000884  Mdl: 00000000
    ffffb10220bfada0: (0006,0118) Flags: 00060000  Mdl: 00000000
    ffffb10213afee00: (0006,0118) Flags: 00060000  Mdl: 00000000
    ffffb1022026e140: (0006,0118) Flags: 00060000  Mdl: 00000000
    ffffb102219f61a0: (0006,0118) Flags: 00060000  Mdl: 00000000
Not impersonating
DeviceMap                 ffff8287d76144e0
Owning Process            ffffb102208da080       Image:         LvaNac.exe
Attached Process          N/A            Image:         N/A
Wait Start TickCount      77714          Ticks: 18453 (0:00:04:48.328)
Context Switch Count      39595          IdealProcessor: 7             
UserTime                  00:00:01.062
KernelTime                00:00:02.546
Win32 Start Address 0x00007ff702f7c278
Stack Init ffffa4891bcb7b90 Current ffffa4891bcb6c40
Base ffffa4891bcb8000 Limit ffffa4891bcb1000 Call 0000000000000000
Priority 9 BasePriority 8 PriorityDecrement 0 IoPriority 2 PagePriority 5
Child-SP          RetAddr               : Args to Child                                                           : Call Site
ffffa489`1bcb6c80 fffff800`53e2f467     : ffffb102`1c54a080 00000000`00000000 ffff9301`70ad0200 ffff9301`70ad8000 : nt!KiSwapContext+0x76
ffffa489`1bcb6dc0 fffff800`53e2efd9     : ffff8287`d7000100 00000000`00000000 fffff800`53e04000 00000000`01a00070 : nt!KiSwapThread+0x297
ffffa489`1bcb6e80 fffff800`53e2dd60     : ffff8cdd`bb70a800 ffff8287`00000000 ffff8287`00000000 ffffa489`1bcb6f91 : nt!KiCommitThreadWait+0x549
ffffa489`1bcb6f20 fffff800`598a4370     : ffffb102`204d05d8 fffff800`00000000 ffffa489`1bcb7300 ffff8287`00000000 : nt!KeWaitForSingleObject+0x520
ffffa489`1bcb6ff0 fffff800`59883d93     : 00000000`00000000 ffffa489`1bcb7180 ffffb102`204d05b8 fffff800`5987004f : NDIS!KWaitEventBase<wistd::integral_constant<enum _EVENT_TYPE,0> >::Wait+0x28
ffffa489`1bcb7030 fffff800`5980ea64     : ffffb102`204cf1a0 ffffa489`1bcb7180 00000000`00000000 ffffa489`1bcb7350 : NDIS!Ndis::BindEngine::ApplyBindChanges+0x14a03
ffffa489`1bcb7080 fffff800`598c68dc     : ffffb102`1eff5800 ffffa489`1bcb7301 ffffb102`1319c008 ffffb102`1319c000 : NDIS!ndisOpenAdapterLegacyProtocol+0x20c
ffffa489`1bcb7240 fffff800`5e3f2ec9     : ffffb102`1319c000 ffffa489`1bcb7650 ffffb102`202692e0 00000000`00000000 : NDIS!NdisOpenAdapter+0x4c
ffffa489`1bcb72b0 fffff800`53e3bc09     : ffffb102`00000000 00000000`00000000 ffffb102`202693b0 00000000`00000025 : npf_xx+0x2ec9
ffffa489`1bcb7350 fffff800`53e34bc4     : 00000000`00000000 00000000`00000000 ffffb102`22ab6010 fffff800`53e351d3 : nt!IofCallDriver+0x59
ffffa489`1bcb7390 fffff800`543be617     : ffffa489`1bcb7650 00000000`00000025 00000000`00000000 00000000`00000000 : nt!IoCallDriverWithTracing+0x34
ffffa489`1bcb73e0 fffff800`543c6b99     : ffffb102`1eff5780 ffffb102`1eff5750 ffffb102`210f4060 00000000`00000001 : nt!IopParseDevice+0x11e7
ffffa489`1bcb7550 fffff800`543c569f     : ffffb102`210f4000 ffffa489`1bcb77b8 ffff8287`00000040 ffffb102`13713900 : nt!ObpLookupObjectName+0x719
ffffa489`1bcb7720 fffff800`5443010d     : 00010074`00000001 000000bd`e63fcd98 00000000`00000001 00000000`00000060 : nt!ObOpenObjectByNameEx+0x1df
ffffa489`1bcb7860 fffff800`5442fad9     : 000000bd`e63fcd40 00000000`c0100080 000000bd`e63fcd98 000000bd`e63fcd58 : nt!IopCreateFile+0x61d
ffffa489`1bcb7900 fffff800`53fcd605     : ffffb102`1c54a080 ffffa489`1bcb7a80 000000bd`e63fc6b8 ffffa489`1bcb79a8 : nt!NtCreateFile+0x79
ffffa489`1bcb7990 00007ffd`76980494     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiSystemServiceCopyEnd+0x25 (TrapFrame @ ffffa489`1bcb7a00)
000000bd`e63fccc8 00000000`00000000     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : 0x00007ffd`76980494

就可以定位到这个信息了。

3、其他的死锁查看,参考这个文章Windbg内核调试之五: 一次利用Dump文件调试Deadlock的实战 - Da Vinci - 博客园 (cnblogs.com)

;看下死锁的情况
0: kd> !locks
**** DUMP OF ALL RESOURCE OBJECTS ****
KD: Scanning for held locks..

Resource @ nt!IopDeviceTreeLock (0xfffff80054235bc0)    Shared 1 owning threads
     Threads: ffffb10213b0d040-01<*> 
KD: Scanning for held locks.

Resource @ nt!PiEngineLock (0xfffff80054235cc0)    Exclusively owned
    Contention Count = 32
    NumberOfExclusiveWaiters = 3
     Threads: ffffb10213b0d040-01<*> 

     Threads Waiting On Exclusive Access:
              ffffb10221df5040       ffffb10220ecc040       ffffb1021e249080       
KD: Scanning for held locks............

Resource @ netbt!NbtConfig (0xfffff8005aec41c8)    Exclusively owned
    Contention Count = 19
    NumberOfExclusiveWaiters = 2
     Threads: ffffb1021f171040-01<*> 

     Threads Waiting On Exclusive Access:
              ffffb10218b200c0       ffffb10220226040   

0: kd> dt nt!_ERESOURCE -b 0xfffff80054235cc0
   +0x000 SystemResourcesList : _LIST_ENTRY [ 0xfffff800`542366c0 - 0xfffff800`54236340 ]
      +0x000 Flink            : 0xfffff800`542366c0 
      +0x008 Blink            : 0xfffff800`54236340 
   +0x010 OwnerTable       : (null) 
   +0x018 ActiveCount      : 0n1
   +0x01a Flag             : 0xf86
   +0x01a ReservedLowFlags : 0x86 ''
   +0x01b WaiterPriority   : 0xf ''
   +0x020 SharedWaiters    : (null) 
   +0x028 ExclusiveWaiters : 0xffffa489`17ff20c8 
   +0x030 OwnerEntry       : _OWNER_ENTRY
      +0x000 OwnerThread      : 0xffffb102`13b0d040 ;这个就是最开始那个线程了
      +0x008 IoPriorityBoosted : 0y0
      +0x008 OwnerReferenced  : 0y0
      +0x008 IoQoSPriorityBoosted : 0y1
      +0x008 OwnerCount       : 0y00000000000000000000000000001 (0x1)
      +0x008 TableSize        : 0xc
   +0x040 ActiveEntries    : 1
   +0x044 ContentionCount  : 0x20
   +0x048 NumberOfSharedWaiters : 0
   +0x04c NumberOfExclusiveWaiters : 3
   +0x050 Reserved2        : (null) 
   +0x058 Address          : (null) 
   +0x058 CreatorBackTraceIndex : 0
   +0x060 SpinLock         : 0

4、后面的代码和ndis驱动排查 略

上一篇:golang mongo-driver 模糊查询


下一篇:调试微信小程序原理