Windows NT/2000/XP/2003/2008 PageWindows Server 2012 > >BSOD 0xC000021A で Verification of a known DLL failed の場合
BSOD 0xC000021A で Verification of a known DLL failed の場合



Windows Server 2012の起動時に0xC0000021Aでブルースクリーン(BSOD)が発生したし、尚且つエラーの原因がVerification of a known DLL failedの場合の問題があるDLLの特定方法です。



このエラーが発生するとセーフモードや前回正常起動時にしても同様のエラーでOSがクラッシュします。
問題が発生しているDLLを特定するために、memory.dmpとWinDbgを使用します。

memory.dmpは標準設定で、C:\Windowsに作成されていますので取り出しWinDbgに読み込ませます。


Microsoft (R) Windows Debugger Version 6.3.9600.17029 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.


Loading Dump File [C:\temp\dmp\MEMORY.DMP]
Kernel Bitmap Dump File: Only kernel address space is available

--- 省略 ---

Windows 8 Kernel Version 9200 MP (32 procs) Free x64
Product: Server, suite: TerminalServer SingleUserTS
Built by: 9200.16628.amd64fre.win8_gdr.130531-1504
Machine Name:
Kernel base = 0xfffff800`c5a80000 PsLoadedModuleList = 0xfffff800`c5d4ca20
Debug session time: Fri Jun  6 17:26:17.796 2014 (UTC + 9:00)
System Uptime: 0 days 0:00:21.511

Loading Kernel Symbols
...............................................................
...............................................
Loading User Symbols
..
Loading unloaded module list

--- 省略 ---

*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

Use !analyze -v to get detailed debugging information.

BugCheck C000021A, {fffff8a004a0e8b0, ffffffffc000012f, fffff8a0049edc00, 0}

Probably caused by : ntkrnlmp.exe ( nt!EmClientQueryRuleState+41b0 )

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

!analyze -v
と入力して解析させます。


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

WINLOGON_FATAL_ERROR (c000021a)
The Winlogon process terminated unexpectedly.
Arguments:
Arg1: fffff8a004a0e8b0, String that identifies the problem.
Arg2: ffffffffc000012f, Error Code.
Arg3: fffff8a0049edc00
Arg4: 0000000000000000

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

--- 省略 ---

ADDITIONAL_DEBUG_TEXT:  Verification of a KnownDLL failed.

MODULE_NAME: nt

FAULTING_MODULE: fffff800c5a80000 nt

DEBUG_FLR_IMAGE_TIMESTAMP:  51a966cd

BUGCHECK_STR:  0xc000021a_c000012f

DEFAULT_BUCKET_ID:  WIN8_DRIVER_FAULT

CURRENT_IRQL:  0

ANALYSIS_VERSION: 6.3.9600.17029 (debuggers(dbg).140219-1702) amd64fre

LAST_CONTROL_TRANSFER:  from fffff800c5df137a to fffff800c5ada440

STACK_TEXT:  
--- 省略 ---

STACK_COMMAND:  kb

FOLLOWUP_IP: 
nt!EmClientQueryRuleState+41b0
fffff800`c5de2a24 cc              int     3

SYMBOL_STACK_INDEX:  2

SYMBOL_NAME:  nt!EmClientQueryRuleState+41b0

FOLLOWUP_NAME:  MachineOwner

IMAGE_NAME:  ntkrnlmp.exe

IMAGE_VERSION:  6.2.9200.16628

BUCKET_ID:  WRONG_SYMBOLS

FAILURE_BUCKET_ID:  WRONG_SYMBOLS

ANALYSIS_SOURCE:  KM

FAILURE_ID_HASH_STRING:  km:wrong_symbols

FAILURE_ID_HASH:  {70b057e8-2462-896f-28e7-ac72d4d365f8}

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

Arg3の内容を見ます。この場合は「Arg3: fffff8a0049edc00」ですので、
da fffff8a0049edc00
と入力します。


7: kd> da fffff8a0049edc00
fffff8a0`049edc00  "SHELL32.dll"


この結果からブート時に問題を起こしているDLLが、SHELL32.DLLの可能性がありますので、C:\Windows\System32およびC:\Windows\SysWow64のSHELL32.DLLを正常に起動している他のWindows Serverからコピーするなどします。
コピー後再起動します。

再起動後も同様のエラーが発生した場合は、再度dmpをWinDbgします。
対象のDLLを確認し、DLLが変わっているようであれば、同様にコピーを繰り返します。

同じDLLでBSODになっている場合は残念ながらこの方法では回復はできません。