「Windowsメモリダンプ解析サービス」のご案内
豊田孝の「IT談話館」 Windowsメモリダンプ解析を依頼する WinDbgとシステム分析




 本「IT談話館」一般公開記事は、10年以上の実務経験を持つ上級Windowsエンジニアを想定しています。
 本館は、Windowsカーネル深層を解析し、クラッシュ原因をはじめとするシステム内の「異様な動き」を検出・分析する
超高度な技術と実績を保有しています。



Windowsシステムクラッシュ情報とデータ分析


 WindowsはSaaSとして提供される時代に入り、その内部は頻繁に更新されています。更新内容の多くは、いろいろな事情から、公にされることはほとんどありません。

 本稿は前編「Windowsシステムクラッシュとシステム概要の把握」の内容を前提に起草されています。

 前編で紹介した実行結果内の赤色表示ヒントを有効活用できるかどうかは、「Windowsアーキテクチャー」の知識量と理解度に依存します。なお、このクラッシュでは、DPC(Deffered Procedure Call)障害が発生していますが、本稿では触れません。DPC障害の解析技術については本館の「Windows 8/10、WinDbg、割り込み、DPC」一般記事が参考になるでしょう。

 実行結果内には2つのプロセス数が表示されています。2つの数値は「2590」と「87」という具合にExectutive層とKernel層で大きく異なっています。これら2つの層で管理しているプロセス数の差は、2500を超えています。この2500という差をどう表現したよいのでしょう。Windowsシステムの暴走といっても言い過ぎではないでしょうし、控えめに性能限界超えといってもよいでしょう。
 また、解析依頼者側はVerifierを有効にし、すでに「netr28ux.sys」デバイスドライバーの動作をかなり調査していることが分かります。さらには、割り込み要求レベル(IRQL)は10進数の13ということになっており、常識的には、CPUへの高位割り込みが発生していることが分かります。この場合、とりあえず、Windowsアーキテクチャーを支える割り込みメカニズに焦点を当て、新しい解析コードを作成し、次のような情報を収集することになるでしょう。
*Core->00 Pcr->0xfffff80250b71000 Prcb->0xfffff80250b71180 CurrentThread->0xfffff80250bcaa00 IntObj->0xfffff80250855800 IntLevel->2 Irql->13
	Trapframe->0xfffff802522b7880 PreviousIrql->02 PreviousRip->ndis!NdisMIndicateReceiveNetBufferLists+0x825 (fffff800`9eabe585)
Core->01	Pcr->0xffffd000d41cd000	Prcb->0xffffd000d41cd180	CurrentThread->0xffffe001973c3080
Core->02	Pcr->0xffffd000d4349000	Prcb->0xffffd000d4349180	CurrentThread->0xffffe00193ecf880
Core->03	Pcr->0xffffd000d43c7000	Prcb->0xffffd000d43c7180	CurrentThread->0xffffe00191e44040
 この情報は、割り込み要求レベル「2」の処理過程で別の上位割り込み「13」が発生したことを示しています。前者の割り込みは「ndis」から要求されていることも分かります。ここまでの数値データ分析結果を総合すると、次のようなNDISコマンドを実行し、NICの状態を調査する必要がありそうです。
0: kd> !ndiskd.minidriver
    ffffe00195f7b740 - tunnel
    ffffe001958df760 - vwifimp
    ffffe00193aa3530 - BthPan
    ffffe00193b9dba0 - netr28ux

0: kd> !ndiskd.minidriver ffffe00193b9dba0


MINIPORT DRIVER

    netr28ux

    Ndis handle        ffffe00193b9dba0
    Driver context     NULL
    DRIVER_OBJECT      ffffe00193b8f080
    Driver image       netr28ux.sys
    Registry path      \REGISTRY\MACHINE\SYSTEM\ControlSet001\Services\netr28ux
    Reference Count    2
    Flags              VERIFYING


MINIPORTS

    Miniport                                                                    
    ffffe00193ba11a0 - ASUS USB-N53 802.11a/b/g/n Network Adapter

    Handlers
    Device objects

0: kd> !ndiskd.netadapter ffffe00193ba11a0


MINIPORT

    ASUS USB-N53 802.11a/b/g/n Network Adapter

    Ndis handle        ffffe00193ba11a0
    Ndis API version   v6.40
    Adapter context    ffffe00194000000
    Driver             ffffe00193b9dba0 - netr28ux  v1.1
    Network interface  ffffcf8099358a20

    Media type         802.3
    Physical medium    Native802.11
    Device instance    USB\VID_0B05&PID_179D\1.0
    Device object      ffffe00193ba1050    More information
    MAC address        60-a4-4c-ec-4c-3d


STATE

    Miniport           Running
    Device PnP         Started             Show state history
    Datapath           DIVERTED_BECAUSE_MINIPORT_RESETTING
    NBL status         NDIS_STATUS_RESET_IN_PROGRESS
    Interface          Up
    Media              Connected
    Power              D0
    References         0n18                Show detail
    User handles       1
    Automatic resets   1
    Resets requested   0
    Pending OID        Unknown value 0xff0c000b
    Flags              NOT_BUS_MASTER, DEFAULT_PORT_ACTIVATED, CALLING_RESET,
                       RESET_IN_PROGRESS, SUPPORTS_MEDIA_SENSE,
                       DOES_NOT_DO_LOOPBACK, MEDIA_CONNECTED
    PnP flags          PM_SUPPORTED, DEVICE_POWER_ENABLED, RECEIVED_START,
                       VERIFYING, HARDWARE_DEVICE, NDIS_WDM_DRIVER
    More flags         PROCESSING_REQUEST, REQUEST_TIMEOUT
    
    .reload ndis.sys....
                     Reload succeeded.



BINDINGS

    Protocol list      Driver              Open               Context           
    [Next link in list is not readable; aborting the list traversal]
    No protocols have an open binding

    Filter list        Driver              Module             Context           
    No filters are attached


MORE INFORMATION

    Driver handlers                        Task offloads
    Power management                       PM protocol offloads
    Pending OIDs                           Timers
    Pending NBLs
    Wake-on-LAN (WoL)                      Packet filter
    Receive queues                         Receive filtering
    RSS                                    NIC switch
    Hardware resources
    NDIS ports                             WMI guids
 ご覧のように、NICはリセット状態に入っています。なぜ「リセット+タイムアウト」が発生したのか?この方面に興味のある方は、本館の「Windows XP/7/8/10 Device Driver、Verifier、リンカー」記事が参考になるかもしれません。今回のケースの場合、解析依頼者側はVerifierの出力情報をそれなりに分析しているはずですから、打ち合わせ会議の際には、Verifierの出力情報に含まれるレベルの技術用語を使用し、こちら側の解析計画、手順、および、意図を説明することになります。

 システムクラッシュは突然発生し、発生時には事前に指定したタイプのクラッシュダンプファイルが作成されます。ダンプファイルの解析にはそれなりの技術力が必要になります。その技術力をどのように習得するか?敢えて申し上げますが、インターネット上に公開されている情報は現在ではほとんど役に立ちません。各種のフォーラムなどの質疑応答の流れを見れば、時間を浪費するだけであることが分かるはずです。最良の現実的な習得手段は、同一のダンプファイルを所属チーム内の複数の同僚と解析し、解析結果を持ち寄り、真剣に意見交換してみることです。ダンプファイルはC++とアセンブラーベースの超ド級の生きた教材そのものです。


ビジネスメニュー




「Windowsメモリダンプ解析サービス」のご案内
Windowsメモリダンプ解析技術

Copyright©豊田孝 2004- 2024
本日は2024-03-29です。