豊田孝のIT談話館
Windowsメモリダンプ解析を依頼する Windows内部解析技術セミナーを受講する

システムスレッド、割り込みテーブル、デバイス割込み






システムスレッド、割り込みテーブル、デバイス割込み


 独自解析コードの実行結果に含まれているIrql->0x0dは、カーネル内部の「割り込みテーブル」を解析しますと、次のように定義されていることが分かります。
d1	Vector->d1	Irql->d		hal!HalpTimerClockInterrupt (fffff802`50809630)
d2	Vector->d2	Irql->d		hal!HalpTimerClockIpiRoutine (fffff802`508097a0)

0: kd> !idt d1

Dumping IDT: fffff802522b0080

d1:	fffff80250855990 hal!HalpTimerClockInterrupt (KINTERRUPT fffff80250855900)


0: kd> !idt d2

Dumping IDT: fffff802522b0080

d2:	fffff80250855890 hal!HalpTimerClockIpiRoutine (KINTERRUPT fffff80250855800)
 ご覧のように、Irql->0x0dは2種類の割り込みルーチンに対応しており、どちらのルーチンに制御が実際に移っているのかを確定する必要があります。そこで、「System」プロセスのスレッド「0xfffff80250bcaa00」の実行の様子を次のようなコマンド操作で確認します。
0: kd> !thread 0xfffff80250bcaa00
THREAD fffff80250bcaa00  Cid 0000.0000  Teb: 0000000000000000 Win32Thread: 0000000000000000 RUNNING on processor 0
Not impersonating
DeviceMap                 ffffc0018c609610
Owning Process            fffff80250bca300       Image:         Idle
Attached Process          ffffe0019161f040       Image:         System
Wait Start TickCount      4887299        Ticks: 32954 (0:00:08:34.906)
Context Switch Count      8588936        IdealProcessor: 0             
UserTime                  00:00:00.000
KernelTime                00:43:53.953
Win32 Start Address nt!KiIdleLoop (0xfffff802509c3c90)
Stack Init fffff802522b8c90 Current fffff802522b8c20
Base fffff802522b9000 Limit fffff802522b3000 Call 0
Priority 0 BasePriority 0 UnusualBoost 0 ForegroundBoost 0 IoPriority 0 PagePriority 5
Child-SP          RetAddr           : Args to Child                                                           : Call Site
fffff802`522c6c88 fffff802`509dbfd8 : 00000000`00000133 00000000`00000000 00000000`00000501 00000000`00000500 : nt!KeBugCheckEx
fffff802`522c6c90 fffff802`508aba71 : 00000000`00000004 00000000`004b13bd 00000000`00000000 ffffe001`92526db0 : nt! ?? ::FNODOBFM::`string'+0xb928
fffff802`522c6d20 fffff802`508097b5 : ffffe001`00400a02 fffff802`5094c8f5 fffff800`a0689180 00000000`0000a101 : nt!KeClockInterruptNotify+0x91
fffff802`522c6f40 fffff802`5095276a : fffff802`522c6f60 00000000`00000008 ffff1bc2`6e12d69e 00000000`0000000c : hal!HalpTimerClockIpiRoutine+0x15
fffff802`522c6f70 fffff802`509c162a : fffff802`50855800 00000000`00000000 00000000`00000001 ffffe001`93ba11a0 : nt!KiCallInterruptServiceRoutine+0x8a
fffff802`522c6fb0 fffff802`509c1a0f : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiInterruptSubDispatchNoLockNoEtw+0xea (TrapFrame @ fffff802`522c6e70)
fffff802`522b7880 fffff800`9eabe585 : 00000000`00000005 ffffe001`9440b670 ffff1bc2`6e15ca4e 00000000`0000000c : nt!KiInterruptDispatchLBControl+0x11f (TrapFrame @ fffff802`522b7880)
fffff802`522b7a10 fffff800`a10bebd3 : ffffe001`93dd7860 ffffe001`93ba64b0 ffffe001`94331130 00000000`00000002 : ndis!NdisMIndicateReceiveNetBufferLists+0x825
fffff802`522b7bf0 fffff800`a10d8f42 : ffffe001`94000000 ffffcf80`99c08df0 ffffe001`00000000 ffffe001`00000002 : netr28ux+0x8bd3
fffff802`522b7c40 fffff800`a12087d7 : ffffe001`94000000 fffff802`522b8100 00000000`00000019 00000000`00000000 : netr28ux+0x22f42
fffff802`522b8110 fffff800`9e0074d9 : 00001ffe`6c228798 00001ffe`6c459b48 ffffe001`93aaf1e8 ffffe001`94333978 : netr28ux+0x1527d7
fffff802`522b8180 fffff800`9e007c51 : 00000000`00000002 ffffe001`93ba6402 ffffe001`93dd7202 ffffe001`938ba800 : Wdf01000!FxRequestBase::CompleteSubmitted+0x496
fffff802`522b8270 fffff802`5096ae05 : ffffe001`93ba1050 ffffe001`93a17502 ffffe001`92981302 ffffe001`73556f49 : Wdf01000!FxIoTarget::_RequestCompletionRoutine+0x162
fffff802`522b82f0 fffff802`508f871b : ffffe001`93dd7210 fffff802`522b8420 00000000`00000000 ffffe001`93dd7643 : nt!IopUnloadSafeCompletion+0x49
fffff802`522b8320 fffff802`50ee7b6f : 00000000`00000000 ffffe001`93dd7200 00000000`000000a7 00000000`00000a70 : nt!IopfCompleteRequest+0x2eb
fffff802`522b8460 fffff800`9e0018fc : 00000000`ffffffff 00000000`0000000a ffffe001`9792bc60 ffffe001`9792bc80 : nt!IovCompleteRequest+0x1d7
fffff802`522b8530 fffff800`9e00e364 : ffffe001`9792be00 ffffe001`00000000 fffff802`00000001 ffffe001`9792be02 : Wdf01000!FxRequest::CompleteInternal+0x23c
fffff802`522b85f0 fffff800`9f821f16 : ffffe001`9792be00 fffff802`522b0000 ffffe001`9792bc60 ffffe001`9792bc60 : Wdf01000!imp_WdfRequestComplete+0x8c
fffff802`522b8660 fffff800`9f822e8c : ffffe001`9792be00 00000000`00000001 ffffe001`9792be80 fffff802`522b87e0 : USBXHCI!Bulk_Transfer_CompleteCancelable+0x15a
fffff802`522b86c0 fffff800`9f81002b : 00000000`00000780 ffffe001`938b6210 00000000`00000000 fffff800`9f9a0208 : USBXHCI!Bulk_ProcessTransferEventWithED1+0x3a8
fffff802`522b8770 fffff800`9e099c81 : fffff802`50b71180 00000000`00000f44 00001ffe`6c749fd8 fffff802`508aee0a : USBXHCI!Interrupter_WdfEvtInterruptDpc+0x427
fffff802`522b8870 fffff802`508e77c0 : fffff802`50b73f00 fffff802`522b8b20 ffffe001`938b6020 fffff802`50b70f44 : Wdf01000!FxInterrupt::DpcHandler+0xc1
fffff802`522b88a0 fffff802`508e6a47 : 40560000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiExecuteAllDpcs+0x1b0
fffff802`522b89e0 fffff802`509c3cea : fffff802`50b71180 fffff802`50b71180 fffff802`50bcaa00 ffffe001`9259b040 : nt!KiRetireDpcList+0xd7
fffff802`522b8c60 00000000`00000000 : fffff802`522b9000 fffff802`522b3000 00000000`00000000 00000000`00000000 : nt!KiIdleLoop+0x5a
 このスレッドスタックトレースは、「d2 Vector->d2 Irql->d hal!HalpTimerClockIpiRoutine (fffff802`508097a0)」に制御が移ったことを示しています。

 次のページでは、独自解析コードの出力情報を総合的に解釈し、問題仮説を設定してみます。

前へ |  次へ


安価なWindowsメモリダンプ解析オンライン入門講座
DKOMベースWindowsメモリダンプ解析サービス DKOMベースWindows内部解析技術セミナー 講演申し込み

Copyright©豊田孝 2004- 2017
本日は2017-01-21です。