{"id":673,"date":"2026-08-21T23:58:23","date_gmt":"2026-08-21T23:58:23","guid":{"rendered":"https:\/\/windows-vps.org\/blog\/?p=673"},"modified":"2026-10-20T22:08:43","modified_gmt":"2026-10-20T22:08:43","slug":"windows-server-bsod-driver-verifier-windbg-dump-analysis","status":"publish","type":"post","link":"https:\/\/windows-vps.org\/blog\/windows-server-bsod-driver-verifier-windbg-dump-analysis\/","title":{"rendered":"Windows Server BSOD Diagnosis: Driver Verifier, Crash Dumps, and WinDbg !analyze"},"content":{"rendered":"<div style=\"padding:20px\">\n<p>When a Windows Server stops responding or reboots itself, the fastest route to a root cause is a kernel memory dump plus the WinDbg <code>!analyze -v<\/code> extension. This guide is a working procedure: reproduce the crash under Driver Verifier, capture the dump reliably, load it with the correct symbol path, and read the bug check parameters without guessing. It assumes the server is a VPS or a small on-prem box where you cannot attach a kernel debugger to the physical serial port \u2014 everything here works from a dump file alone. If your instance has a small system disk, note that crash dumps are written to the page file&#8217;s backing volume, and <a href=\"https:\/\/windows-vps.org\/\">Windows Server instance sizing<\/a> matters for whether a full or kernel dump is practical.<\/p>\n<h2>Step 1: Choose the Dump Type Before the Crash<\/h2>\n<p>Crash dump configuration is a registry\/BCD setting, not a control-panel tweak that applies after the fact. Decide before you run Driver Verifier.<\/p>\n<table>\n<thead>\n<tr>\n<th>Type<\/th>\n<th>Size<\/th>\n<th>Contents<\/th>\n<th>Use when<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Small (minidump)<\/td>\n<td>~256 KB \u2013 2 MB<\/td>\n<td>Bug check code, parameters, current thread, loaded module list, stack of the crashing thread<\/td>\n<td>Always enabled as a baseline; enough for most third-party driver faults<\/td>\n<\/tr>\n<tr>\n<td>Kernel<\/td>\n<td>Typically 400 MB \u2013 2 GB<\/td>\n<td>All kernel-mode memory: pools, driver images, stacks of all threads<\/td>\n<td>Pool corruption, deadlocks, need driver data of a non-crashing thread<\/td>\n<\/tr>\n<tr>\n<td>Complete<\/td>\n<td>RAM size or larger<\/td>\n<td>Entire physical memory including user mode<\/td>\n<td>Rarely needed server-side; requires page file \u2265 RAM<\/td>\n<\/tr>\n<tr>\n<td>Automatic<\/td>\n<td>Kernel by default<\/td>\n<td>Kernel dump, minidump if kernel cannot be written<\/td>\n<td>Good default for production<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Set it with <code>wmic<\/code>-free commands on Server 2022\/2025:<\/p>\n<pre><code># Show current setting (1=complete, 2=kernel, 3=small, 7=automatic)\nGet-ItemProperty 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\CrashControl' |\n    Select-Object CrashDumpEnabled, DumpFile, MinidumpDir, AutoReboot, Overwrite\n\n# Set kernel dump explicitly\nSet-ItemProperty 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\CrashControl' -Name CrashDumpEnabled -Value 2\nSet-ItemProperty 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\CrashControl' -Name Overwrite -Value 0\n\n# Page file must be at least on the same disk and large enough\nGet-CimInstance Win32_PageFileUsage | Select-Object Name, AllocatedBaseSize, CurrentUsage\n<\/code><\/pre>\n<p><code>Overwrite=0<\/code> keeps a dump at <code>C:\\Windows\\MEMORY.DMP<\/code> instead of overwriting it on the next crash \u2014 essential when you need several runs to identify an intermittent driver. Ensure the disk has free space equal to the expected dump size before enabling a kernel dump on a 40 GB VPS disk.<\/p>\n<h2>Step 2: Driver Verifier \u2014 Targeted, Not &#8220;Verify Everything&#8221;<\/h2>\n<p>Driver Verifier&#8217;s <code>\/standard<\/code> suite applied to all drivers will make a production server unbootable. On a VPS this means a recovery console session. Verify only the drivers you suspect, and only with a non-destructive option set.<\/p>\n<pre><code># List third-party drivers and their vendors\nGet-CimInstance Win32_SystemDriver | Where-Object State -eq 'Running' |\n    ForEach-Object {\n        $p = (Get-Item $_.PathName -ErrorAction SilentlyContinue).VersionInfo\n        [pscustomobject]@{Name=$_.Name; Company=$p.CompanyName; File=$_.PathName}\n    } | Where-Object Company -notlike 'Microsoft*' | Format-Table -AutoSize\n<\/code><\/pre>\n<p>Pick <strong>one<\/strong> driver and enable only the options that are meaningful for it:<\/p>\n<pre><code>verifier \/volatile \/adddriver myfilter.sys \/flags 0x209BB\nverifier \/volatile \/querysettings\n<\/code><\/pre>\n<p>The <code>\/volatile<\/code> switch applies the settings until the next reboot without persisting them in the registry. That matters: if the box fails to boot under verification, a reset node in a VPS panel has already cleared the setting. Reboot, reproduce the load, and wait for bug check <code>0xC4<\/code> (DRIVER_VERIFIER_DETECTED_VIOLATION) \u2014 the dump now names the driver in the bug check parameters.<\/p>\n<ul>\n<li><code>0x209BB<\/code> is the standard suite subset most useful for filter drivers: special pool, pool tracking, I\/O verification, deadlock detection, IRP logging.<\/li>\n<li>Avoid <code>\/flags 0x1<\/code> (special pool) alone on file system filter drivers unless you have spare RAM \u2014 special pool is allocation-heavy and will mask timing issues with memory pressure.<\/li>\n<li>Never use <code>verifier \/flags 0x9<\/code> (low resource simulation) on a server hosting production work.<\/li>\n<\/ul>\n<h2>Step 3: Retrieve the Dump and Symbols<\/h2>\n<ul>\n<li>Minidumps land in <code>%SystemRoot%\\Minidump\\*.dmp<\/code>; kernel dumps at <code>%SystemRoot%\\MEMORY.DMP<\/code>.<\/li>\n<li>Copy the dump off the server before analyzing \u2014 WinDbg&#8217;s symbol download and the analyzer&#8217;s working set can consume gigabytes.<\/li>\n<li>Use WinDbg (Store app &#8220;WinDbg&#8221; is the modern version; the classic <code>windbg.exe<\/code> from the Windows SDK still works and is faster to script).<\/li>\n<li>Set the symbol path to the Microsoft symbol server plus your own cache:<\/li>\n<\/ul>\n<pre><code>set _NT_SYMBOL_PATH=srv*C:\\symbols*https:\/\/msdl.microsoft.com\/download\/symbols\n\nwindbg.exe -z C:\\dumps\\MEMORY.DMP -c \".symfix; .reload \/f; !analyze -v; q\"\n<\/code><\/pre>\n<p>The <code>.reload \/f<\/code> forces a full load of symbols; without it, <code>!analyze<\/code> may report module names with no line information and the stack will be unreadable. If you are behind a proxy, <code>_NT_SYMBOL_PATH<\/code> supports <code>srv*https:\/\/...<\/code> only after you set <code>WinHTTP<\/code> proxy settings with <code>netsh winhttp set proxy<\/code>.<\/p>\n<h2>Step 4: Reading <code>!analyze -v<\/code> Output<\/h2>\n<p>The output has five fields that matter, in order:<\/p>\n<ul>\n<li><strong>BUGCHECK_CODE \/ BUGCHECK_P1..P4<\/strong> \u2014 the stop code and its arguments. Look the code up in the official bug check reference before interpreting the parameters, because parameter meaning is code-specific.<\/li>\n<li><strong>FAULTING_MODULE or IMAGE_NAME<\/strong> \u2014 the module blamed by the stack walker. This is the strongest hint, not proof.<\/li>\n<li><strong>PROCESS_NAME<\/strong> \u2014 the process whose thread crashed. <code>System<\/code> means a kernel-mode fault not tied to user code.<\/li>\n<li><strong>STACK_TEXT<\/strong> \u2014 the call stack. Read bottom-up. The frame that calls into a Microsoft module from a third-party module is the suspect boundary.<\/li>\n<li><strong>FAILURE_BUCKET_ID<\/strong> \u2014 a stable hash of code + module + offsets. Search this string; if others report the same bucket, you have a known driver defect rather than a unique configuration issue.<\/li>\n<\/ul>\n<p>Common misreads:<\/p>\n<ul>\n<li>A stack that ends in <code>nt!KeBugCheckEx<\/code> and nothing else with a high faulting module offset often means pool corruption \u2014 the crashing thread is the victim, not the cause. Enable special pool and rerun to find the corruptor.<\/li>\n<li><code>0x50 PAGE_FAULT_IN_NONPAGED_AREA<\/code> with a parameter pointing inside <code>nt<\/code> is frequently a stale or wrong driver calling a freed allocation; <code>!pool<\/code> on the address in the newer WinDbg shows the owning tag.<\/li>\n<li><code>0x133 DPC_WATCHDOG_VIOLATION<\/code> on a VPS is often a storage driver holding a DPC too long under high IOPS (boot storms, antivirus scans) rather than a code defect. Check the DPC time and the IO queue depths.<\/li>\n<\/ul>\n<h2>Step 5: Confirm with the Driver, Not the Stack<\/h2>\n<p>Before filing a bug, gather proof the driver is involved:<\/p>\n<ol>\n<li>Identify the driver&#8217;s file version from the dump&#8217;s module list (<code>lmvm<\/code> in WinDbg prints timestamp, version, and company).<\/li>\n<li>Check whether the version predates the OS build. An inbox-era driver on a Server 2025 kernel is a strong candidate.<\/li>\n<li>Rerun the workload with the driver&#8217;s feature disabled (its own registry switch) and confirm the crash disappears.<\/li>\n<li>Test on a clean VM with the same driver version and the same storage stack \u2014 this distinguishes a driver bug from a host hypervisor issue, which on a VPS is the customer&#8217;s most common false trail.<\/li>\n<\/ol>\n<p>Then remove verification: <code>verifier \/volatile \/reset<\/code> and reboot, or <code>verifier \/reset<\/code> if settings were persisted. Leaving a driver under verification in production is a scheduled outage.<\/p>\n<h2>Practical Notes for VPS Hosts<\/h2>\n<p>Two host-level details affect crash analysis. First, many providers expose a console that shows the bug check text but does not forward the dump automatically \u2014 you must pull <code>MEMORY.DMP<\/code> over RDP or SMB before any repair reinstall wipes it. Second, a provider-level reset during a hang produces event log entries (<code>Kernel-Power 41<\/code>) with no dump at all; that is a host-side action, not a bug check, and Driver Verifier will not help. Keep a copy of dumps, <code>Get-WinEvent<\/code> output, and the loaded driver list together, as described in the operations guides on <a href=\"https:\/\/windows-vps.org\/\">Windows VPS server operations<\/a>, so the next incident starts with evidence instead of a fresh install.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Decode every IIS 500.19 sub-status code, find the locked section or XML fault behind it, and unlock config paths safely with appcmd and PowerShell on Windows Server 2025.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":3,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-673","post","type-post","status-publish","format-standard","hentry","category-tutorials-guides"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Windows Server BSOD Diagnosis: Driver Verifier, Crash Dumps, and WinDbg !analyze - Windows VPS Blog<\/title>\n<meta name=\"description\" content=\"Decode every IIS 500.19 sub-status code, find the locked section or XML fault behind it, and unlock config paths safely with appcmd and PowerShell on Windows Server 2025.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/windows-vps.org\/blog\/windows-server-bsod-driver-verifier-windbg-dump-analysis\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Windows Server BSOD Diagnosis: Driver Verifier, Crash Dumps, and WinDbg !analyze\" \/>\n<meta property=\"og:description\" content=\"Windows Server BSOD Diagnosis: Driver Verifier, Crash Dumps, and WinDbg !analyze\" \/>\n<meta property=\"og:url\" content=\"https:\/\/windows-vps.org\/blog\/windows-server-bsod-driver-verifier-windbg-dump-analysis\/\" \/>\n<meta property=\"og:site_name\" content=\"Windows VPS Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-21T23:58:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-20T22:08:43+00:00\" \/>\n<meta name=\"author\" content=\"windows-vps\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@myxiechengxuan\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"windows-vps\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/windows-vps.org\/blog\/windows-server-bsod-driver-verifier-windbg-dump-analysis\/\",\"url\":\"https:\/\/windows-vps.org\/blog\/windows-server-bsod-driver-verifier-windbg-dump-analysis\/\",\"name\":\"Windows Server BSOD Diagnosis: Driver Verifier, Crash Dumps, and WinDbg !analyze - Windows VPS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/#website\"},\"datePublished\":\"2026-08-21T23:58:23+00:00\",\"dateModified\":\"2026-10-20T22:08:43+00:00\",\"author\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58\"},\"description\":\"Decode every IIS 500.19 sub-status code, find the locked section or XML fault behind it, and unlock config paths safely with appcmd and PowerShell on Windows Server 2025.\",\"breadcrumb\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/windows-server-bsod-driver-verifier-windbg-dump-analysis\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/windows-vps.org\/blog\/windows-server-bsod-driver-verifier-windbg-dump-analysis\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/windows-vps.org\/blog\/windows-server-bsod-driver-verifier-windbg-dump-analysis\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/windows-vps.org\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Windows Server BSOD Diagnosis: Driver Verifier, Crash Dumps, and WinDbg !analyze\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/windows-vps.org\/blog\/#website\",\"url\":\"https:\/\/windows-vps.org\/blog\/\",\"name\":\"Windows VPS Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/windows-vps.org\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58\",\"name\":\"windows-vps\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g\",\"caption\":\"windows-vps\"},\"sameAs\":[\"https:\/\/windows-vps.org\/blog\",\"https:\/\/x.com\/myxiechengxuan\"],\"url\":\"https:\/\/windows-vps.org\/blog\/author\/myxiechengxuan\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Windows Server BSOD Diagnosis: Driver Verifier, Crash Dumps, and WinDbg !analyze - Windows VPS Blog","description":"Decode every IIS 500.19 sub-status code, find the locked section or XML fault behind it, and unlock config paths safely with appcmd and PowerShell on Windows Server 2025.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/windows-vps.org\/blog\/windows-server-bsod-driver-verifier-windbg-dump-analysis\/","og_locale":"en_US","og_type":"article","og_title":"Windows Server BSOD Diagnosis: Driver Verifier, Crash Dumps, and WinDbg !analyze","og_description":"Windows Server BSOD Diagnosis: Driver Verifier, Crash Dumps, and WinDbg !analyze","og_url":"https:\/\/windows-vps.org\/blog\/windows-server-bsod-driver-verifier-windbg-dump-analysis\/","og_site_name":"Windows VPS Blog","article_published_time":"2026-08-21T23:58:23+00:00","article_modified_time":"2026-10-20T22:08:43+00:00","author":"windows-vps","twitter_card":"summary_large_image","twitter_creator":"@myxiechengxuan","twitter_misc":{"Written by":"windows-vps","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/windows-vps.org\/blog\/windows-server-bsod-driver-verifier-windbg-dump-analysis\/","url":"https:\/\/windows-vps.org\/blog\/windows-server-bsod-driver-verifier-windbg-dump-analysis\/","name":"Windows Server BSOD Diagnosis: Driver Verifier, Crash Dumps, and WinDbg !analyze - Windows VPS Blog","isPartOf":{"@id":"https:\/\/windows-vps.org\/blog\/#website"},"datePublished":"2026-08-21T23:58:23+00:00","dateModified":"2026-10-20T22:08:43+00:00","author":{"@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58"},"description":"Decode every IIS 500.19 sub-status code, find the locked section or XML fault behind it, and unlock config paths safely with appcmd and PowerShell on Windows Server 2025.","breadcrumb":{"@id":"https:\/\/windows-vps.org\/blog\/windows-server-bsod-driver-verifier-windbg-dump-analysis\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/windows-vps.org\/blog\/windows-server-bsod-driver-verifier-windbg-dump-analysis\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/windows-vps.org\/blog\/windows-server-bsod-driver-verifier-windbg-dump-analysis\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/windows-vps.org\/blog\/"},{"@type":"ListItem","position":2,"name":"Windows Server BSOD Diagnosis: Driver Verifier, Crash Dumps, and WinDbg !analyze"}]},{"@type":"WebSite","@id":"https:\/\/windows-vps.org\/blog\/#website","url":"https:\/\/windows-vps.org\/blog\/","name":"Windows VPS Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/windows-vps.org\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58","name":"windows-vps","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g","caption":"windows-vps"},"sameAs":["https:\/\/windows-vps.org\/blog","https:\/\/x.com\/myxiechengxuan"],"url":"https:\/\/windows-vps.org\/blog\/author\/myxiechengxuan\/"}]}},"_links":{"self":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/673","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/comments?post=673"}],"version-history":[{"count":7,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/673\/revisions"}],"predecessor-version":[{"id":899,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/673\/revisions\/899"}],"wp:attachment":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/media?parent=673"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/categories?post=673"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/tags?post=673"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}