1 | /* $Id: DBGFR3BugCheck.cpp 105476 2024-07-24 11:38:00Z vboxsync $ */
|
---|
2 | /** @file
|
---|
3 | * DBGF - Debugger Facility, NT Bug Checks.
|
---|
4 | */
|
---|
5 |
|
---|
6 | /*
|
---|
7 | * Copyright (C) 2018-2023 Oracle and/or its affiliates.
|
---|
8 | *
|
---|
9 | * This file is part of VirtualBox base platform packages, as
|
---|
10 | * available from https://www.virtualbox.org.
|
---|
11 | *
|
---|
12 | * This program is free software; you can redistribute it and/or
|
---|
13 | * modify it under the terms of the GNU General Public License
|
---|
14 | * as published by the Free Software Foundation, in version 3 of the
|
---|
15 | * License.
|
---|
16 | *
|
---|
17 | * This program is distributed in the hope that it will be useful, but
|
---|
18 | * WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
---|
20 | * General Public License for more details.
|
---|
21 | *
|
---|
22 | * You should have received a copy of the GNU General Public License
|
---|
23 | * along with this program; if not, see <https://www.gnu.org/licenses>.
|
---|
24 | *
|
---|
25 | * SPDX-License-Identifier: GPL-3.0-only
|
---|
26 | */
|
---|
27 |
|
---|
28 |
|
---|
29 | /*********************************************************************************************************************************
|
---|
30 | * Header Files *
|
---|
31 | *********************************************************************************************************************************/
|
---|
32 | #define LOG_GROUP LOG_GROUP_DBGF
|
---|
33 | #include <VBox/vmm/dbgf.h>
|
---|
34 | #include <VBox/vmm/mm.h>
|
---|
35 | #include <VBox/vmm/tm.h>
|
---|
36 | #include "DBGFInternal.h"
|
---|
37 | #include <VBox/vmm/vm.h>
|
---|
38 | #include <VBox/vmm/uvm.h>
|
---|
39 | #include <VBox/err.h>
|
---|
40 |
|
---|
41 | #include <iprt/assert.h>
|
---|
42 | #include <iprt/ctype.h>
|
---|
43 | #include <iprt/message.h>
|
---|
44 |
|
---|
45 |
|
---|
46 | /*********************************************************************************************************************************
|
---|
47 | * Internal Functions *
|
---|
48 | *********************************************************************************************************************************/
|
---|
49 | static FNDBGFHANDLERINT dbgfR3BugCheckInfo;
|
---|
50 |
|
---|
51 |
|
---|
52 | /**
|
---|
53 | * Initializes the bug check state and registers the info callback.
|
---|
54 | *
|
---|
55 | * No termination function needed.
|
---|
56 | *
|
---|
57 | * @returns VBox status code.
|
---|
58 | * @param pVM The VM handle.
|
---|
59 | */
|
---|
60 | int dbgfR3BugCheckInit(PVM pVM)
|
---|
61 | {
|
---|
62 | PCFGMNODE const pCfgNode = CFGMR3GetChild(CFGMR3GetRoot(pVM), "DBGF/");
|
---|
63 |
|
---|
64 | /** @cfgm{/DBGF/SuspendOnBsod, boolean, false}
|
---|
65 | * Enables suspending (pausing) of the VM on a BSOD.
|
---|
66 | */
|
---|
67 | int rc = CFGMR3QueryBoolDef(pCfgNode, "SuspendOnBsod", &pVM->dbgf.s.BugCheck.fCfgSuspendOnBsod, false);
|
---|
68 | AssertLogRelRCReturn(rc, rc);
|
---|
69 |
|
---|
70 | /** @cfgm{/DBGF/PowerOffOnBsod, boolean, false}
|
---|
71 | * Enables powering off the VM automatically on a BSOD.
|
---|
72 | */
|
---|
73 | rc = CFGMR3QueryBoolDef(pCfgNode, "PowerOffOnBsod", &pVM->dbgf.s.BugCheck.fCfgPowerOffOnBsod, false);
|
---|
74 | AssertLogRelRCReturn(rc, rc);
|
---|
75 |
|
---|
76 | pVM->dbgf.s.BugCheck.idCpu = NIL_VMCPUID;
|
---|
77 | pVM->dbgf.s.BugCheck.enmEvent = DBGFEVENT_END;
|
---|
78 |
|
---|
79 | return DBGFR3InfoRegisterInternal(pVM, "bugcheck",
|
---|
80 | "Show bugcheck info. Can specify bug check code and parameters to lookup info.",
|
---|
81 | dbgfR3BugCheckInfo);
|
---|
82 | }
|
---|
83 |
|
---|
84 |
|
---|
85 | /**
|
---|
86 | * Names a few common NT status codes for DBGFR3FormatBugCheck.
|
---|
87 | */
|
---|
88 | static const char *dbgfR3GetNtStatusName(uint32_t uNtStatus)
|
---|
89 | {
|
---|
90 | switch (uNtStatus)
|
---|
91 | {
|
---|
92 | case 0x80000001: return " - STATUS_GUARD_PAGE_VIOLATION";
|
---|
93 | case 0x80000002: return " - STATUS_DATATYPE_MISALIGNMENT";
|
---|
94 | case 0x80000003: return " - STATUS_BREAKPOINT";
|
---|
95 | case 0x80000004: return " - STATUS_SINGLE_STEP";
|
---|
96 | case 0xc0000008: return " - STATUS_INVALID_HANDLE";
|
---|
97 | case 0xc0000005: return " - STATUS_ACCESS_VIOLATION";
|
---|
98 | case 0xc0000027: return " - STATUS_UNWIND";
|
---|
99 | case 0xc0000028: return " - STATUS_BAD_STACK";
|
---|
100 | case 0xc0000029: return " - STATUS_INVALID_UNWIND_TARGET";
|
---|
101 | default: return "";
|
---|
102 | }
|
---|
103 | }
|
---|
104 |
|
---|
105 |
|
---|
106 | /**
|
---|
107 | * Formats a symbol for DBGFR3FormatBugCheck.
|
---|
108 | */
|
---|
109 | static const char *dbgfR3FormatSymbol(PUVM pUVM, char *pszSymbol, size_t cchSymbol, const char *pszPrefix, uint64_t uFlatAddr)
|
---|
110 | {
|
---|
111 | DBGFADDRESS Addr;
|
---|
112 | RTGCINTPTR offDisp = 0;
|
---|
113 | PRTDBGSYMBOL pSym = DBGFR3AsSymbolByAddrA(pUVM, DBGF_AS_GLOBAL, DBGFR3AddrFromFlat(pUVM, &Addr, uFlatAddr),
|
---|
114 | RTDBGSYMADDR_FLAGS_LESS_OR_EQUAL | RTDBGSYMADDR_FLAGS_SKIP_ABS_IN_DEFERRED,
|
---|
115 | &offDisp, NULL /*phMod*/);
|
---|
116 | if (pSym)
|
---|
117 | {
|
---|
118 | if (!offDisp)
|
---|
119 | RTStrPrintf(pszSymbol, cchSymbol, "%s%s", pszPrefix, pSym->szName);
|
---|
120 | else if (offDisp > 0)
|
---|
121 | RTStrPrintf(pszSymbol, cchSymbol, "%s%s + %#RX64", pszPrefix, pSym->szName, (uint64_t)offDisp);
|
---|
122 | else
|
---|
123 | RTStrPrintf(pszSymbol, cchSymbol, "%s%s - %#RX64", pszPrefix, pSym->szName, (uint64_t)-offDisp);
|
---|
124 | RTDbgSymbolFree(pSym);
|
---|
125 | }
|
---|
126 | else
|
---|
127 | *pszSymbol = '\0';
|
---|
128 | return pszSymbol;
|
---|
129 | }
|
---|
130 |
|
---|
131 |
|
---|
132 | /**
|
---|
133 | * Formats a windows bug check (BSOD).
|
---|
134 | *
|
---|
135 | * @retval VINF_SUCCESS on success.
|
---|
136 | * @retval VINF_BUFFER_OVERFLOW if there is more data than the buffer can handle.
|
---|
137 | *
|
---|
138 | * @param pUVM The usermode VM handle.
|
---|
139 | * @param pszDetails The output buffer.
|
---|
140 | * @param cbDetails The size of the output buffer.
|
---|
141 | * @param uBugCheck The bugheck code.
|
---|
142 | * @param uP1 Bug check parameter 1.
|
---|
143 | * @param uP2 Bug check parameter 2.
|
---|
144 | * @param uP3 Bug check parameter 3.
|
---|
145 | * @param uP4 Bug check parameter 4.
|
---|
146 | */
|
---|
147 | VMMR3DECL(int) DBGFR3FormatBugCheck(PUVM pUVM, char *pszDetails, size_t cbDetails,
|
---|
148 | uint64_t uBugCheck, uint64_t uP1, uint64_t uP2, uint64_t uP3, uint64_t uP4)
|
---|
149 | {
|
---|
150 | /*
|
---|
151 | * Start with bug check line typically seen in windbg.
|
---|
152 | */
|
---|
153 | size_t cchUsed = RTStrPrintf(pszDetails, cbDetails,
|
---|
154 | "BugCheck %RX64 {%RX64, %RX64, %RX64, %RX64}\n", uBugCheck, uP1, uP2, uP3, uP4);
|
---|
155 | if (cchUsed >= cbDetails)
|
---|
156 | return VINF_BUFFER_OVERFLOW;
|
---|
157 | pszDetails += cchUsed;
|
---|
158 | cbDetails -= cchUsed;
|
---|
159 |
|
---|
160 | /*
|
---|
161 | * Try name the bugcheck and format parameters if we can/care.
|
---|
162 | */
|
---|
163 | char szSym[512];
|
---|
164 | switch (uBugCheck)
|
---|
165 | {
|
---|
166 | case 0x00000001: cchUsed = RTStrPrintf(pszDetails, cbDetails, "APC_INDEX_MISMATCH\n"); break;
|
---|
167 | case 0x00000002: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DEVICE_QUEUE_NOT_BUSY\n"); break;
|
---|
168 | case 0x00000003: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INVALID_AFFINITY_SET\n"); break;
|
---|
169 | case 0x00000004: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INVALID_DATA_ACCESS_TRAP\n"); break;
|
---|
170 | case 0x00000005: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INVALID_PROCESS_ATTACH_ATTEMPT\n"); break;
|
---|
171 | case 0x00000006: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INVALID_PROCESS_DETACH_ATTEMPT\n"); break;
|
---|
172 | case 0x00000007: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INVALID_SOFTWARE_INTERRUPT\n"); break;
|
---|
173 | case 0x00000008: cchUsed = RTStrPrintf(pszDetails, cbDetails, "IRQL_NOT_DISPATCH_LEVEL\n"); break;
|
---|
174 | case 0x00000009: cchUsed = RTStrPrintf(pszDetails, cbDetails, "IRQL_NOT_GREATER_OR_EQUAL\n"); break;
|
---|
175 | case 0x0000000a:
|
---|
176 | cchUsed = RTStrPrintf(pszDetails, cbDetails,
|
---|
177 | "IRQL_NOT_LESS_OR_EQUAL\n"
|
---|
178 | "P1: %016RX64 - memory referenced\n"
|
---|
179 | "P2: %016RX64 - IRQL\n"
|
---|
180 | "P3: %016RX64 - bitfield\n"
|
---|
181 | " b0: %u - %s operation\n"
|
---|
182 | " b3: %u - %sexecute operation\n"
|
---|
183 | "P4: %016RX64 - EIP/RIP%s\n",
|
---|
184 | uP1, uP2, uP3,
|
---|
185 | RT_BOOL(uP3 & RT_BIT_64(0)), uP3 & RT_BIT_64(0) ? "write" : "read",
|
---|
186 | RT_BOOL(uP3 & RT_BIT_64(3)), uP3 & RT_BIT_64(3) ? "not-" : "",
|
---|
187 | uP4, dbgfR3FormatSymbol(pUVM, szSym, sizeof(szSym), ": ", uP4));
|
---|
188 | break;
|
---|
189 | case 0x0000000b: cchUsed = RTStrPrintf(pszDetails, cbDetails, "NO_EXCEPTION_HANDLING_SUPPORT\n"); break;
|
---|
190 | case 0x0000000c: cchUsed = RTStrPrintf(pszDetails, cbDetails, "MAXIMUM_WAIT_OBJECTS_EXCEEDED\n"); break;
|
---|
191 | case 0x0000000d: cchUsed = RTStrPrintf(pszDetails, cbDetails, "MUTEX_LEVEL_NUMBER_VIOLATION\n"); break;
|
---|
192 | case 0x0000000e: cchUsed = RTStrPrintf(pszDetails, cbDetails, "NO_USER_MODE_CONTEXT\n"); break;
|
---|
193 | case 0x0000000f: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SPIN_LOCK_ALREADY_OWNED\n"); break;
|
---|
194 | case 0x00000010: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SPIN_LOCK_NOT_OWNED\n"); break;
|
---|
195 | case 0x00000011: cchUsed = RTStrPrintf(pszDetails, cbDetails, "THREAD_NOT_MUTEX_OWNER\n"); break;
|
---|
196 | case 0x00000012: cchUsed = RTStrPrintf(pszDetails, cbDetails, "TRAP_CAUSE_UNKNOWN\n"); break;
|
---|
197 | case 0x00000013: cchUsed = RTStrPrintf(pszDetails, cbDetails, "EMPTY_THREAD_REAPER_LIST\n"); break;
|
---|
198 | case 0x00000014: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CREATE_DELETE_LOCK_NOT_LOCKED\n"); break;
|
---|
199 | case 0x00000015: cchUsed = RTStrPrintf(pszDetails, cbDetails, "LAST_CHANCE_CALLED_FROM_KMODE\n"); break;
|
---|
200 | case 0x00000016: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CID_HANDLE_CREATION\n"); break;
|
---|
201 | case 0x00000017: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CID_HANDLE_DELETION\n"); break;
|
---|
202 | case 0x00000018: cchUsed = RTStrPrintf(pszDetails, cbDetails, "REFERENCE_BY_POINTER\n"); break;
|
---|
203 | case 0x00000019: cchUsed = RTStrPrintf(pszDetails, cbDetails, "BAD_POOL_HEADER\n"); break;
|
---|
204 | case 0x0000001a: cchUsed = RTStrPrintf(pszDetails, cbDetails, "MEMORY_MANAGEMENT\n"); break;
|
---|
205 | case 0x0000001b: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PFN_SHARE_COUNT\n"); break;
|
---|
206 | case 0x0000001c: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PFN_REFERENCE_COUNT\n"); break;
|
---|
207 | case 0x0000001d: cchUsed = RTStrPrintf(pszDetails, cbDetails, "NO_SPIN_LOCK_AVAILABLE\n"); break;
|
---|
208 | case 0x0000001e:
|
---|
209 | cchUsed = RTStrPrintf(pszDetails, cbDetails,
|
---|
210 | "KMODE_EXCEPTION_NOT_HANDLED\n"
|
---|
211 | "P1: %016RX64 - exception code%s\n"
|
---|
212 | "P2: %016RX64 - EIP/RIP%s\n"
|
---|
213 | "P3: %016RX64 - Xcpt param #0\n"
|
---|
214 | "P4: %016RX64 - Xcpt param #1\n",
|
---|
215 | uP1, dbgfR3GetNtStatusName((uint32_t)uP1),
|
---|
216 | uP2, dbgfR3FormatSymbol(pUVM, szSym, sizeof(szSym), ": ", uP2),
|
---|
217 | uP3, uP4);
|
---|
218 | break;
|
---|
219 | case 0x0000001f: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SHARED_RESOURCE_CONV_ERROR\n"); break;
|
---|
220 | case 0x00000020: cchUsed = RTStrPrintf(pszDetails, cbDetails, "KERNEL_APC_PENDING_DURING_EXIT\n"); break;
|
---|
221 | case 0x00000021: cchUsed = RTStrPrintf(pszDetails, cbDetails, "QUOTA_UNDERFLOW\n"); break;
|
---|
222 | case 0x00000022: cchUsed = RTStrPrintf(pszDetails, cbDetails, "FILE_SYSTEM\n"); break;
|
---|
223 | case 0x00000023: cchUsed = RTStrPrintf(pszDetails, cbDetails, "FAT_FILE_SYSTEM\n"); break;
|
---|
224 | case 0x00000024: cchUsed = RTStrPrintf(pszDetails, cbDetails, "NTFS_FILE_SYSTEM\n"); break;
|
---|
225 | case 0x00000025: cchUsed = RTStrPrintf(pszDetails, cbDetails, "NPFS_FILE_SYSTEM\n"); break;
|
---|
226 | case 0x00000026: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CDFS_FILE_SYSTEM\n"); break;
|
---|
227 | case 0x00000027: cchUsed = RTStrPrintf(pszDetails, cbDetails, "RDR_FILE_SYSTEM\n"); break;
|
---|
228 | case 0x00000028: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CORRUPT_ACCESS_TOKEN\n"); break;
|
---|
229 | case 0x00000029: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SECURITY_SYSTEM\n"); break;
|
---|
230 | case 0x0000002a: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INCONSISTENT_IRP\n"); break;
|
---|
231 | case 0x0000002b: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PANIC_STACK_SWITCH\n"); break;
|
---|
232 | case 0x0000002c: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PORT_DRIVER_INTERNAL\n"); break;
|
---|
233 | case 0x0000002d: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SCSI_DISK_DRIVER_INTERNAL\n"); break;
|
---|
234 | case 0x0000002e: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DATA_BUS_ERROR\n"); break;
|
---|
235 | case 0x0000002f: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INSTRUCTION_BUS_ERROR\n"); break;
|
---|
236 | case 0x00000030: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SET_OF_INVALID_CONTEXT\n"); break;
|
---|
237 | case 0x00000031: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PHASE0_INITIALIZATION_FAILED\n"); break;
|
---|
238 | case 0x00000032: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PHASE1_INITIALIZATION_FAILED\n"); break;
|
---|
239 | case 0x00000033: cchUsed = RTStrPrintf(pszDetails, cbDetails, "UNEXPECTED_INITIALIZATION_CALL\n"); break;
|
---|
240 | case 0x00000034: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CACHE_MANAGER\n"); break;
|
---|
241 | case 0x00000035: cchUsed = RTStrPrintf(pszDetails, cbDetails, "NO_MORE_IRP_STACK_LOCATIONS\n"); break;
|
---|
242 | case 0x00000036: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DEVICE_REFERENCE_COUNT_NOT_ZERO\n"); break;
|
---|
243 | case 0x00000037: cchUsed = RTStrPrintf(pszDetails, cbDetails, "FLOPPY_INTERNAL_ERROR\n"); break;
|
---|
244 | case 0x00000038: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SERIAL_DRIVER_INTERNAL\n"); break;
|
---|
245 | case 0x00000039: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SYSTEM_EXIT_OWNED_MUTEX\n"); break;
|
---|
246 | case 0x0000003a: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SYSTEM_UNWIND_PREVIOUS_USER\n"); break;
|
---|
247 | case 0x0000003b: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SYSTEM_SERVICE_EXCEPTION\n"); break;
|
---|
248 | case 0x0000003c: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INTERRUPT_UNWIND_ATTEMPTED\n"); break;
|
---|
249 | case 0x0000003d: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INTERRUPT_EXCEPTION_NOT_HANDLED\n"); break;
|
---|
250 | case 0x0000003e: cchUsed = RTStrPrintf(pszDetails, cbDetails, "MULTIPROCESSOR_CONFIGURATION_NOT_SUPPORTED\n"); break;
|
---|
251 | case 0x0000003f: cchUsed = RTStrPrintf(pszDetails, cbDetails, "NO_MORE_SYSTEM_PTES\n"); break;
|
---|
252 | case 0x00000040: cchUsed = RTStrPrintf(pszDetails, cbDetails, "TARGET_MDL_TOO_SMALL\n"); break;
|
---|
253 | case 0x00000041: cchUsed = RTStrPrintf(pszDetails, cbDetails, "MUST_SUCCEED_POOL_EMPTY\n"); break;
|
---|
254 | case 0x00000042: cchUsed = RTStrPrintf(pszDetails, cbDetails, "ATDISK_DRIVER_INTERNAL\n"); break;
|
---|
255 | case 0x00000043: cchUsed = RTStrPrintf(pszDetails, cbDetails, "NO_SUCH_PARTITION\n"); break;
|
---|
256 | case 0x00000044: cchUsed = RTStrPrintf(pszDetails, cbDetails, "MULTIPLE_IRP_COMPLETE_REQUESTS\n"); break;
|
---|
257 | case 0x00000045: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INSUFFICIENT_SYSTEM_MAP_REGS\n"); break;
|
---|
258 | case 0x00000046: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DEREF_UNKNOWN_LOGON_SESSION\n"); break;
|
---|
259 | case 0x00000047: cchUsed = RTStrPrintf(pszDetails, cbDetails, "REF_UNKNOWN_LOGON_SESSION\n"); break;
|
---|
260 | case 0x00000048: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CANCEL_STATE_IN_COMPLETED_IRP\n"); break;
|
---|
261 | case 0x00000049: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PAGE_FAULT_WITH_INTERRUPTS_OFF\n"); break;
|
---|
262 | case 0x0000004a: cchUsed = RTStrPrintf(pszDetails, cbDetails, "IRQL_GT_ZERO_AT_SYSTEM_SERVICE\n"); break;
|
---|
263 | case 0x0000004b: cchUsed = RTStrPrintf(pszDetails, cbDetails, "STREAMS_INTERNAL_ERROR\n"); break;
|
---|
264 | case 0x0000004c: cchUsed = RTStrPrintf(pszDetails, cbDetails, "FATAL_UNHANDLED_HARD_ERROR\n"); break;
|
---|
265 | case 0x0000004d: cchUsed = RTStrPrintf(pszDetails, cbDetails, "NO_PAGES_AVAILABLE\n"); break;
|
---|
266 | case 0x0000004e: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PFN_LIST_CORRUPT\n"); break;
|
---|
267 | case 0x0000004f: cchUsed = RTStrPrintf(pszDetails, cbDetails, "NDIS_INTERNAL_ERROR\n"); break;
|
---|
268 | case 0x00000050: /* PAGE_FAULT_IN_NONPAGED_AREA */
|
---|
269 | case 0x10000050: /* PAGE_FAULT_IN_NONPAGED_AREA_M */
|
---|
270 | cchUsed = RTStrPrintf(pszDetails, cbDetails,
|
---|
271 | "PAGE_FAULT_IN_NONPAGED_AREA%s\n"
|
---|
272 | "P1: %016RX64 - memory referenced\n"
|
---|
273 | "P2: %016RX64 - IRQL\n"
|
---|
274 | "P3: %016RX64 - %s\n"
|
---|
275 | "P4: %016RX64 - reserved\n",
|
---|
276 | uBugCheck & 0x10000000 ? "_M" : "", uP1, uP2, uP3, uP3 & RT_BIT_64(0) ? "write" : "read", uP4);
|
---|
277 | break;
|
---|
278 | case 0x00000051: cchUsed = RTStrPrintf(pszDetails, cbDetails, "REGISTRY_ERROR\n"); break;
|
---|
279 | case 0x00000052: cchUsed = RTStrPrintf(pszDetails, cbDetails, "MAILSLOT_FILE_SYSTEM\n"); break;
|
---|
280 | case 0x00000053: cchUsed = RTStrPrintf(pszDetails, cbDetails, "NO_BOOT_DEVICE\n"); break;
|
---|
281 | case 0x00000054: cchUsed = RTStrPrintf(pszDetails, cbDetails, "LM_SERVER_INTERNAL_ERROR\n"); break;
|
---|
282 | case 0x00000055: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DATA_COHERENCY_EXCEPTION\n"); break;
|
---|
283 | case 0x00000056: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INSTRUCTION_COHERENCY_EXCEPTION\n"); break;
|
---|
284 | case 0x00000057: cchUsed = RTStrPrintf(pszDetails, cbDetails, "XNS_INTERNAL_ERROR\n"); break;
|
---|
285 | case 0x00000058: cchUsed = RTStrPrintf(pszDetails, cbDetails, "VOLMGRX_INTERNAL_ERROR\n"); break;
|
---|
286 | case 0x00000059: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PINBALL_FILE_SYSTEM\n"); break;
|
---|
287 | case 0x0000005a: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CRITICAL_SERVICE_FAILED\n"); break;
|
---|
288 | case 0x0000005b: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SET_ENV_VAR_FAILED\n"); break;
|
---|
289 | case 0x0000005c: cchUsed = RTStrPrintf(pszDetails, cbDetails, "HAL_INITIALIZATION_FAILED\n"); break;
|
---|
290 | case 0x0000005d: cchUsed = RTStrPrintf(pszDetails, cbDetails, "UNSUPPORTED_PROCESSOR\n"); break;
|
---|
291 | case 0x0000005e: cchUsed = RTStrPrintf(pszDetails, cbDetails, "OBJECT_INITIALIZATION_FAILED\n"); break;
|
---|
292 | case 0x0000005f: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SECURITY_INITIALIZATION_FAILED\n"); break;
|
---|
293 | case 0x00000060: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PROCESS_INITIALIZATION_FAILED\n"); break;
|
---|
294 | case 0x00000061: cchUsed = RTStrPrintf(pszDetails, cbDetails, "HAL1_INITIALIZATION_FAILED\n"); break;
|
---|
295 | case 0x00000062: cchUsed = RTStrPrintf(pszDetails, cbDetails, "OBJECT1_INITIALIZATION_FAILED\n"); break;
|
---|
296 | case 0x00000063: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SECURITY1_INITIALIZATION_FAILED\n"); break;
|
---|
297 | case 0x00000064: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SYMBOLIC_INITIALIZATION_FAILED\n"); break;
|
---|
298 | case 0x00000065: cchUsed = RTStrPrintf(pszDetails, cbDetails, "MEMORY1_INITIALIZATION_FAILED\n"); break;
|
---|
299 | case 0x00000066: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CACHE_INITIALIZATION_FAILED\n"); break;
|
---|
300 | case 0x00000067: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CONFIG_INITIALIZATION_FAILED\n"); break;
|
---|
301 | case 0x00000068: cchUsed = RTStrPrintf(pszDetails, cbDetails, "FILE_INITIALIZATION_FAILED\n"); break;
|
---|
302 | case 0x00000069: cchUsed = RTStrPrintf(pszDetails, cbDetails, "IO1_INITIALIZATION_FAILED\n"); break;
|
---|
303 | case 0x0000006a: cchUsed = RTStrPrintf(pszDetails, cbDetails, "LPC_INITIALIZATION_FAILED\n"); break;
|
---|
304 | case 0x0000006b: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PROCESS1_INITIALIZATION_FAILED\n"); break;
|
---|
305 | case 0x0000006c: cchUsed = RTStrPrintf(pszDetails, cbDetails, "REFMON_INITIALIZATION_FAILED\n"); break;
|
---|
306 | case 0x0000006d: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SESSION1_INITIALIZATION_FAILED\n"); break;
|
---|
307 | case 0x0000006e: cchUsed = RTStrPrintf(pszDetails, cbDetails, "BOOTPROC_INITIALIZATION_FAILED\n"); break;
|
---|
308 | case 0x0000006f: cchUsed = RTStrPrintf(pszDetails, cbDetails, "VSL_INITIALIZATION_FAILED\n"); break;
|
---|
309 | case 0x00000070: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SOFT_RESTART_FATAL_ERROR\n"); break;
|
---|
310 | case 0x00000072: cchUsed = RTStrPrintf(pszDetails, cbDetails, "ASSIGN_DRIVE_LETTERS_FAILED\n"); break;
|
---|
311 | case 0x00000073: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CONFIG_LIST_FAILED\n"); break;
|
---|
312 | case 0x00000074: cchUsed = RTStrPrintf(pszDetails, cbDetails, "BAD_SYSTEM_CONFIG_INFO\n"); break;
|
---|
313 | case 0x00000075: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CANNOT_WRITE_CONFIGURATION\n"); break;
|
---|
314 | case 0x00000076: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PROCESS_HAS_LOCKED_PAGES\n"); break;
|
---|
315 | case 0x00000077: cchUsed = RTStrPrintf(pszDetails, cbDetails, "KERNEL_STACK_INPAGE_ERROR\n"); break;
|
---|
316 | case 0x00000078: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PHASE0_EXCEPTION\n"); break;
|
---|
317 | case 0x00000079: cchUsed = RTStrPrintf(pszDetails, cbDetails, "MISMATCHED_HAL\n"); break;
|
---|
318 | case 0x0000007a: cchUsed = RTStrPrintf(pszDetails, cbDetails, "KERNEL_DATA_INPAGE_ERROR\n"); break;
|
---|
319 | case 0x0000007b: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INACCESSIBLE_BOOT_DEVICE\n"); break;
|
---|
320 | case 0x0000007c: cchUsed = RTStrPrintf(pszDetails, cbDetails, "BUGCODE_NDIS_DRIVER\n"); break;
|
---|
321 | case 0x0000007d: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INSTALL_MORE_MEMORY\n"); break;
|
---|
322 | case 0x0000007e: /* SYSTEM_THREAD_EXCEPTION_NOT_HANDLED */
|
---|
323 | case 0x1000007e: /* SYSTEM_THREAD_EXCEPTION_NOT_HANDLED_M */
|
---|
324 | cchUsed = RTStrPrintf(pszDetails, cbDetails,
|
---|
325 | "SYSTEM_THREAD_EXCEPTION_NOT_HANDLED%s\n"
|
---|
326 | "P1: %016RX64 - exception code%s\n"
|
---|
327 | "P2: %016RX64 - EIP/RIP%s\n"
|
---|
328 | "P3: %016RX64 - Xcpt address\n"
|
---|
329 | "P4: %016RX64 - Context address\n",
|
---|
330 | uBugCheck & 0x10000000 ? "_M" : "", uP1, dbgfR3GetNtStatusName((uint32_t)uP1),
|
---|
331 | uP2, dbgfR3FormatSymbol(pUVM, szSym, sizeof(szSym), ": ", uP2),
|
---|
332 | uP3, uP4);
|
---|
333 | break;
|
---|
334 | case 0x0000007f: /* UNEXPECTED_KERNEL_MODE_TRAP */
|
---|
335 | case 0x1000007f: /* UNEXPECTED_KERNEL_MODE_TRAP_M */
|
---|
336 | cchUsed = RTStrPrintf(pszDetails, cbDetails,
|
---|
337 | "UNEXPECTED_KERNEL_MODE_TRAP%s\n"
|
---|
338 | "P1: %016RX64 - x86 trap number\n"
|
---|
339 | "P2: %016RX64 - reserved/errorcode?\n"
|
---|
340 | "P3: %016RX64 - reserved\n"
|
---|
341 | "P4: %016RX64 - reserved\n",
|
---|
342 | uBugCheck & 0x10000000 ? "_M" : "", uP1, uP2, uP3, uP4);
|
---|
343 | break;
|
---|
344 | case 0x00000080: cchUsed = RTStrPrintf(pszDetails, cbDetails, "NMI_HARDWARE_FAILURE\n"); break;
|
---|
345 | case 0x00000081: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SPIN_LOCK_INIT_FAILURE\n"); break;
|
---|
346 | case 0x00000082: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DFS_FILE_SYSTEM\n"); break;
|
---|
347 | case 0x00000083: cchUsed = RTStrPrintf(pszDetails, cbDetails, "OFS_FILE_SYSTEM\n"); break;
|
---|
348 | case 0x00000084: cchUsed = RTStrPrintf(pszDetails, cbDetails, "RECOM_DRIVER\n"); break;
|
---|
349 | case 0x00000085: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SETUP_FAILURE\n"); break;
|
---|
350 | case 0x00000086: cchUsed = RTStrPrintf(pszDetails, cbDetails, "AUDIT_FAILURE\n"); break;
|
---|
351 | case 0x0000008b: cchUsed = RTStrPrintf(pszDetails, cbDetails, "MBR_CHECKSUM_MISMATCH\n"); break;
|
---|
352 | case 0x0000008e: /* KERNEL_MODE_EXCEPTION_NOT_HANDLED */
|
---|
353 | case 0x1000008e: /* KERNEL_MODE_EXCEPTION_NOT_HANDLED_M */
|
---|
354 | cchUsed = RTStrPrintf(pszDetails, cbDetails,
|
---|
355 | "KERNEL_MODE_EXCEPTION_NOT_HANDLED%s\n"
|
---|
356 | "P1: %016RX64 - exception code%s\n"
|
---|
357 | "P2: %016RX64 - EIP/RIP%s\n"
|
---|
358 | "P3: %016RX64 - Trap frame address\n"
|
---|
359 | "P4: %016RX64 - reserved\n",
|
---|
360 | uBugCheck & 0x10000000 ? "_M" : "", uP1, dbgfR3GetNtStatusName((uint32_t)uP1),
|
---|
361 | uP2, dbgfR3FormatSymbol(pUVM, szSym, sizeof(szSym), ": ", uP2),
|
---|
362 | uP3, uP4);
|
---|
363 | break;
|
---|
364 | case 0x0000008f: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PP0_INITIALIZATION_FAILED\n"); break;
|
---|
365 | case 0x00000090: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PP1_INITIALIZATION_FAILED\n"); break;
|
---|
366 | case 0x00000091: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WIN32K_INIT_OR_RIT_FAILURE\n"); break;
|
---|
367 | case 0x00000092: cchUsed = RTStrPrintf(pszDetails, cbDetails, "UP_DRIVER_ON_MP_SYSTEM\n"); break;
|
---|
368 | case 0x00000093: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INVALID_KERNEL_HANDLE\n"); break;
|
---|
369 | case 0x00000094: cchUsed = RTStrPrintf(pszDetails, cbDetails, "KERNEL_STACK_LOCKED_AT_EXIT\n"); break;
|
---|
370 | case 0x00000095: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PNP_INTERNAL_ERROR\n"); break;
|
---|
371 | case 0x00000096: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INVALID_WORK_QUEUE_ITEM\n"); break;
|
---|
372 | case 0x00000097: cchUsed = RTStrPrintf(pszDetails, cbDetails, "BOUND_IMAGE_UNSUPPORTED\n"); break;
|
---|
373 | case 0x00000098: cchUsed = RTStrPrintf(pszDetails, cbDetails, "END_OF_NT_EVALUATION_PERIOD\n"); break;
|
---|
374 | case 0x00000099: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INVALID_REGION_OR_SEGMENT\n"); break;
|
---|
375 | case 0x0000009a: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SYSTEM_LICENSE_VIOLATION\n"); break;
|
---|
376 | case 0x0000009b: cchUsed = RTStrPrintf(pszDetails, cbDetails, "UDFS_FILE_SYSTEM\n"); break;
|
---|
377 | case 0x0000009c: cchUsed = RTStrPrintf(pszDetails, cbDetails, "MACHINE_CHECK_EXCEPTION\n"); break;
|
---|
378 | case 0x0000009e: cchUsed = RTStrPrintf(pszDetails, cbDetails, "USER_MODE_HEALTH_MONITOR\n"); break;
|
---|
379 | case 0x0000009f: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_POWER_STATE_FAILURE\n"); break;
|
---|
380 | case 0x000000a0: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INTERNAL_POWER_ERROR\n"); break;
|
---|
381 | case 0x000000a1: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PCI_BUS_DRIVER_INTERNAL\n"); break;
|
---|
382 | case 0x000000a2: cchUsed = RTStrPrintf(pszDetails, cbDetails, "MEMORY_IMAGE_CORRUPT\n"); break;
|
---|
383 | case 0x000000a3: cchUsed = RTStrPrintf(pszDetails, cbDetails, "ACPI_DRIVER_INTERNAL\n"); break;
|
---|
384 | case 0x000000a4: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CNSS_FILE_SYSTEM_FILTER\n"); break;
|
---|
385 | case 0x000000a5: cchUsed = RTStrPrintf(pszDetails, cbDetails, "ACPI_BIOS_ERROR\n"); break;
|
---|
386 | case 0x000000a6: cchUsed = RTStrPrintf(pszDetails, cbDetails, "FP_EMULATION_ERROR\n"); break;
|
---|
387 | case 0x000000a7: cchUsed = RTStrPrintf(pszDetails, cbDetails, "BAD_EXHANDLE\n"); break;
|
---|
388 | case 0x000000a8: cchUsed = RTStrPrintf(pszDetails, cbDetails, "BOOTING_IN_SAFEMODE_MINIMAL\n"); break;
|
---|
389 | case 0x000000a9: cchUsed = RTStrPrintf(pszDetails, cbDetails, "BOOTING_IN_SAFEMODE_NETWORK\n"); break;
|
---|
390 | case 0x000000aa: cchUsed = RTStrPrintf(pszDetails, cbDetails, "BOOTING_IN_SAFEMODE_DSREPAIR\n"); break;
|
---|
391 | case 0x000000ab: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SESSION_HAS_VALID_POOL_ON_EXIT\n"); break;
|
---|
392 | case 0x000000ac: cchUsed = RTStrPrintf(pszDetails, cbDetails, "HAL_MEMORY_ALLOCATION\n"); break;
|
---|
393 | case 0x000000b1: cchUsed = RTStrPrintf(pszDetails, cbDetails, "BGI_DETECTED_VIOLATION\n"); break;
|
---|
394 | case 0x000000b4: cchUsed = RTStrPrintf(pszDetails, cbDetails, "VIDEO_DRIVER_INIT_FAILURE\n"); break;
|
---|
395 | case 0x000000b5: cchUsed = RTStrPrintf(pszDetails, cbDetails, "BOOTLOG_LOADED\n"); break;
|
---|
396 | case 0x000000b6: cchUsed = RTStrPrintf(pszDetails, cbDetails, "BOOTLOG_NOT_LOADED\n"); break;
|
---|
397 | case 0x000000b7: cchUsed = RTStrPrintf(pszDetails, cbDetails, "BOOTLOG_ENABLED\n"); break;
|
---|
398 | case 0x000000b8: cchUsed = RTStrPrintf(pszDetails, cbDetails, "ATTEMPTED_SWITCH_FROM_DPC\n"); break;
|
---|
399 | case 0x000000b9: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CHIPSET_DETECTED_ERROR\n"); break;
|
---|
400 | case 0x000000ba: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SESSION_HAS_VALID_VIEWS_ON_EXIT\n"); break;
|
---|
401 | case 0x000000bb: cchUsed = RTStrPrintf(pszDetails, cbDetails, "NETWORK_BOOT_INITIALIZATION_FAILED\n"); break;
|
---|
402 | case 0x000000bc: cchUsed = RTStrPrintf(pszDetails, cbDetails, "NETWORK_BOOT_DUPLICATE_ADDRESS\n"); break;
|
---|
403 | case 0x000000bd: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INVALID_HIBERNATED_STATE\n"); break;
|
---|
404 | case 0x000000be: cchUsed = RTStrPrintf(pszDetails, cbDetails, "ATTEMPTED_WRITE_TO_READONLY_MEMORY\n"); break;
|
---|
405 | case 0x000000bf: cchUsed = RTStrPrintf(pszDetails, cbDetails, "MUTEX_ALREADY_OWNED\n"); break;
|
---|
406 | case 0x000000c0: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PCI_CONFIG_SPACE_ACCESS_FAILURE\n"); break;
|
---|
407 | case 0x000000c1: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION\n"); break;
|
---|
408 |
|
---|
409 | case 0x000000c2:
|
---|
410 | cchUsed = RTStrPrintf(pszDetails, cbDetails,
|
---|
411 | "BAD_POOL_CALLER\n"
|
---|
412 | "P1: %016RX64 - ", uP1);
|
---|
413 | if (cchUsed >= cbDetails)
|
---|
414 | return VINF_BUFFER_OVERFLOW;
|
---|
415 | cbDetails -= cchUsed;
|
---|
416 | pszDetails += cchUsed;
|
---|
417 | switch (uP1)
|
---|
418 | {
|
---|
419 | case 1:
|
---|
420 | case 2:
|
---|
421 | case 4:
|
---|
422 | cchUsed = RTStrPrintf(pszDetails, cbDetails,
|
---|
423 | "Pool header corrupted!\n"
|
---|
424 | "P2: %016RX64 - Pool header address\n"
|
---|
425 | "P3: %016RX64 - Pool header contents\n"
|
---|
426 | "P4: %016RX64 - reserved\n", uP2, uP3, uP4);
|
---|
427 | break;
|
---|
428 | case 6:
|
---|
429 | cchUsed = RTStrPrintf(pszDetails, cbDetails,
|
---|
430 | "Double free w/o tag!\n"
|
---|
431 | "P2: %016RX64 - reserved\n"
|
---|
432 | "P3: %016RX64 - Pool header address\n"
|
---|
433 | "P4: %016RX64 - Pool header contents\n", uP2, uP3, uP4);
|
---|
434 | break;
|
---|
435 | case 7:
|
---|
436 | cchUsed = RTStrPrintf(pszDetails, cbDetails,
|
---|
437 | "Double free w/ tag!\n"
|
---|
438 | "P2: %016RX64 - tag %c%c%c%c\n"
|
---|
439 | "P3: %016RX64 - Pool header contents\n"
|
---|
440 | "P4: %016RX64 - Free address\n",
|
---|
441 | uP2,
|
---|
442 | RT_C_IS_PRINT(RT_BYTE1(uP2)) ? RT_BYTE1(uP2) : '.',
|
---|
443 | RT_C_IS_PRINT(RT_BYTE2(uP2)) ? RT_BYTE2(uP2) : '.',
|
---|
444 | RT_C_IS_PRINT(RT_BYTE3(uP2)) ? RT_BYTE3(uP2) : '.',
|
---|
445 | RT_C_IS_PRINT(RT_BYTE4(uP2)) ? RT_BYTE4(uP2) : '.',
|
---|
446 | uP3, uP4);
|
---|
447 | break;
|
---|
448 | case 8:
|
---|
449 | cchUsed = RTStrPrintf(pszDetails, cbDetails,
|
---|
450 | "Wrong IRQL for allocation!\n"
|
---|
451 | "P2: %016RX64 - IRQL\n"
|
---|
452 | "P3: %016RX64 - Pool type\n"
|
---|
453 | "P4: %016RX64 - Allocation size\n",
|
---|
454 | uP2, uP3, uP4);
|
---|
455 | break;
|
---|
456 | case 9:
|
---|
457 | cchUsed = RTStrPrintf(pszDetails, cbDetails,
|
---|
458 | "Wrong IRQL for free!\n"
|
---|
459 | "P2: %016RX64 - IRQL\n"
|
---|
460 | "P3: %016RX64 - Pool type\n"
|
---|
461 | "P4: %016RX64 - Pool address\n",
|
---|
462 | uP2, uP3, uP4);
|
---|
463 | break;
|
---|
464 | /** @todo fill in more BAD_POOL_CALLER types here as needed.*/
|
---|
465 | default:
|
---|
466 | cchUsed = RTStrPrintf(pszDetails, cbDetails,
|
---|
467 | "Unknown pool violation type\n"
|
---|
468 | "P2: %016RX64 - type specific\n"
|
---|
469 | "P3: %016RX64 - type specific\n"
|
---|
470 | "P4: %016RX64 - type specific\n",
|
---|
471 | uP2, uP3, uP4);
|
---|
472 | break;
|
---|
473 | }
|
---|
474 | break;
|
---|
475 |
|
---|
476 | case 0x000000c3: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SYSTEM_IMAGE_BAD_SIGNATURE\n"); break;
|
---|
477 | case 0x000000c4: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_VERIFIER_DETECTED_VIOLATION\n"); break;
|
---|
478 | case 0x000000c5: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_CORRUPTED_EXPOOL\n"); break;
|
---|
479 | case 0x000000c6: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_CAUGHT_MODIFYING_FREED_POOL\n"); break;
|
---|
480 | case 0x000000c7: cchUsed = RTStrPrintf(pszDetails, cbDetails, "TIMER_OR_DPC_INVALID\n"); break;
|
---|
481 | case 0x000000c8: cchUsed = RTStrPrintf(pszDetails, cbDetails, "IRQL_UNEXPECTED_VALUE\n"); break;
|
---|
482 | case 0x000000c9: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_VERIFIER_IOMANAGER_VIOLATION\n"); break;
|
---|
483 | case 0x000000ca: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PNP_DETECTED_FATAL_ERROR\n"); break;
|
---|
484 | case 0x000000cb: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS\n"); break;
|
---|
485 | case 0x000000cc: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PAGE_FAULT_IN_FREED_SPECIAL_POOL\n"); break;
|
---|
486 | case 0x000000cd: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PAGE_FAULT_BEYOND_END_OF_ALLOCATION\n"); break;
|
---|
487 | case 0x000000ce: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS\n"); break;
|
---|
488 | case 0x000000cf: cchUsed = RTStrPrintf(pszDetails, cbDetails, "TERMINAL_SERVER_DRIVER_MADE_INCORRECT_MEMORY_REFERENCE\n"); break;
|
---|
489 | case 0x000000d0: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_CORRUPTED_MMPOOL\n"); break;
|
---|
490 | case 0x000000d1:
|
---|
491 | cchUsed = RTStrPrintf(pszDetails, cbDetails,
|
---|
492 | "DRIVER_IRQL_NOT_LESS_OR_EQUAL\n"
|
---|
493 | "P1: %016RX64 - memory referenced\n"
|
---|
494 | "P2: %016RX64 - IRQL\n"
|
---|
495 | "P3: %016RX64 - %s\n"
|
---|
496 | "P4: %016RX64 - EIP/RIP%s\n",
|
---|
497 | uP1, uP2, uP3, uP3 & RT_BIT_64(0) ? "write" : "read",
|
---|
498 | uP4, dbgfR3FormatSymbol(pUVM, szSym, sizeof(szSym), ": ", uP4));
|
---|
499 | break;
|
---|
500 | case 0x000000d2: cchUsed = RTStrPrintf(pszDetails, cbDetails, "BUGCODE_ID_DRIVER\n"); break;
|
---|
501 | case 0x000000d3: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_PORTION_MUST_BE_NONPAGED\n"); break;
|
---|
502 | case 0x000000d4: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SYSTEM_SCAN_AT_RAISED_IRQL_CAUGHT_IMPROPER_DRIVER_UNLOAD\n"); break;
|
---|
503 | case 0x000000d5: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_PAGE_FAULT_IN_FREED_SPECIAL_POOL\n"); break;
|
---|
504 | case 0x000000d6: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_PAGE_FAULT_BEYOND_END_OF_ALLOCATION\n"); break;
|
---|
505 | case 0x100000d6: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_PAGE_FAULT_BEYOND_END_OF_ALLOCATION_M\n"); break;
|
---|
506 | case 0x000000d7: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_UNMAPPING_INVALID_VIEW\n"); break;
|
---|
507 | case 0x000000d8:
|
---|
508 | cchUsed = RTStrPrintf(pszDetails, cbDetails,
|
---|
509 | "DRIVER_USED_EXCESSIVE_PTES\n"
|
---|
510 | "P1: %016RX64 - Driver name pointer\n"
|
---|
511 | "P2: %016RX64 - Number of PTEs\n"
|
---|
512 | "P3: %016RX64 - Free system PTEs\n"
|
---|
513 | "P4: %016RX64 - System PTEs\n",
|
---|
514 | uP1, uP2, uP3, uP4);
|
---|
515 | break;
|
---|
516 | case 0x000000d9: cchUsed = RTStrPrintf(pszDetails, cbDetails, "LOCKED_PAGES_TRACKER_CORRUPTION\n"); break;
|
---|
517 | case 0x000000da: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SYSTEM_PTE_MISUSE\n"); break;
|
---|
518 | case 0x000000db: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_CORRUPTED_SYSPTES\n"); break;
|
---|
519 | case 0x000000dc: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_INVALID_STACK_ACCESS\n"); break;
|
---|
520 | case 0x000000de: cchUsed = RTStrPrintf(pszDetails, cbDetails, "POOL_CORRUPTION_IN_FILE_AREA\n"); break;
|
---|
521 | case 0x000000df: cchUsed = RTStrPrintf(pszDetails, cbDetails, "IMPERSONATING_WORKER_THREAD\n"); break;
|
---|
522 | case 0x000000e0: cchUsed = RTStrPrintf(pszDetails, cbDetails, "ACPI_BIOS_FATAL_ERROR\n"); break;
|
---|
523 | case 0x000000e1: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WORKER_THREAD_RETURNED_AT_BAD_IRQL\n"); break;
|
---|
524 | case 0x000000e2: cchUsed = RTStrPrintf(pszDetails, cbDetails, "MANUALLY_INITIATED_CRASH\n"); break;
|
---|
525 | case 0x000000e3: cchUsed = RTStrPrintf(pszDetails, cbDetails, "RESOURCE_NOT_OWNED\n"); break;
|
---|
526 | case 0x000000e4: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WORKER_INVALID\n"); break;
|
---|
527 | case 0x000000e5: cchUsed = RTStrPrintf(pszDetails, cbDetails, "POWER_FAILURE_SIMULATE\n"); break;
|
---|
528 | case 0x000000e6: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_VERIFIER_DMA_VIOLATION\n"); break;
|
---|
529 | case 0x000000e7: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INVALID_FLOATING_POINT_STATE\n"); break;
|
---|
530 | case 0x000000e8: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INVALID_CANCEL_OF_FILE_OPEN\n"); break;
|
---|
531 | case 0x000000e9: cchUsed = RTStrPrintf(pszDetails, cbDetails, "ACTIVE_EX_WORKER_THREAD_TERMINATION\n"); break;
|
---|
532 | case 0x000000ea: cchUsed = RTStrPrintf(pszDetails, cbDetails, "THREAD_STUCK_IN_DEVICE_DRIVER\n"); break;
|
---|
533 | case 0x100000ea: cchUsed = RTStrPrintf(pszDetails, cbDetails, "THREAD_STUCK_IN_DEVICE_DRIVER_M\n"); break;
|
---|
534 | case 0x000000eb: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DIRTY_MAPPED_PAGES_CONGESTION\n"); break;
|
---|
535 | case 0x000000ec: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SESSION_HAS_VALID_SPECIAL_POOL_ON_EXIT\n"); break;
|
---|
536 | case 0x000000ed: cchUsed = RTStrPrintf(pszDetails, cbDetails, "UNMOUNTABLE_BOOT_VOLUME\n"); break;
|
---|
537 | case 0x000000ef: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CRITICAL_PROCESS_DIED\n"); break;
|
---|
538 | case 0x000000f0: cchUsed = RTStrPrintf(pszDetails, cbDetails, "STORAGE_MINIPORT_ERROR\n"); break;
|
---|
539 | case 0x000000f1: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SCSI_VERIFIER_DETECTED_VIOLATION\n"); break;
|
---|
540 | case 0x000000f2: cchUsed = RTStrPrintf(pszDetails, cbDetails, "HARDWARE_INTERRUPT_STORM\n"); break;
|
---|
541 | case 0x000000f3: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DISORDERLY_SHUTDOWN\n"); break;
|
---|
542 | case 0x000000f4: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CRITICAL_OBJECT_TERMINATION\n"); break;
|
---|
543 | case 0x000000f5: cchUsed = RTStrPrintf(pszDetails, cbDetails, "FLTMGR_FILE_SYSTEM\n"); break;
|
---|
544 | case 0x000000f6: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PCI_VERIFIER_DETECTED_VIOLATION\n"); break;
|
---|
545 | case 0x000000f7: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_OVERRAN_STACK_BUFFER\n"); break;
|
---|
546 | case 0x000000f8: cchUsed = RTStrPrintf(pszDetails, cbDetails, "RAMDISK_BOOT_INITIALIZATION_FAILED\n"); break;
|
---|
547 | case 0x000000f9: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_RETURNED_STATUS_REPARSE_FOR_VOLUME_OPEN\n"); break;
|
---|
548 | case 0x000000fa: cchUsed = RTStrPrintf(pszDetails, cbDetails, "HTTP_DRIVER_CORRUPTED\n"); break;
|
---|
549 | case 0x000000fb: cchUsed = RTStrPrintf(pszDetails, cbDetails, "RECURSIVE_MACHINE_CHECK\n"); break;
|
---|
550 | case 0x000000fc: cchUsed = RTStrPrintf(pszDetails, cbDetails, "ATTEMPTED_EXECUTE_OF_NOEXECUTE_MEMORY\n"); break;
|
---|
551 | case 0x000000fd: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DIRTY_NOWRITE_PAGES_CONGESTION\n"); break;
|
---|
552 | case 0x000000fe: cchUsed = RTStrPrintf(pszDetails, cbDetails, "BUGCODE_USB_DRIVER\n"); break;
|
---|
553 | case 0x000000ff: cchUsed = RTStrPrintf(pszDetails, cbDetails, "RESERVE_QUEUE_OVERFLOW\n"); break;
|
---|
554 | case 0x00000100: cchUsed = RTStrPrintf(pszDetails, cbDetails, "LOADER_BLOCK_MISMATCH\n"); break;
|
---|
555 | case 0x00000101: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CLOCK_WATCHDOG_TIMEOUT\n"); break;
|
---|
556 | case 0x00000102: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DPC_WATCHDOG_TIMEOUT\n"); break;
|
---|
557 | case 0x00000103: cchUsed = RTStrPrintf(pszDetails, cbDetails, "MUP_FILE_SYSTEM\n"); break;
|
---|
558 | case 0x00000104: cchUsed = RTStrPrintf(pszDetails, cbDetails, "AGP_INVALID_ACCESS\n"); break;
|
---|
559 | case 0x00000105: cchUsed = RTStrPrintf(pszDetails, cbDetails, "AGP_GART_CORRUPTION\n"); break;
|
---|
560 | case 0x00000106: cchUsed = RTStrPrintf(pszDetails, cbDetails, "AGP_ILLEGALLY_REPROGRAMMED\n"); break;
|
---|
561 | case 0x00000107: cchUsed = RTStrPrintf(pszDetails, cbDetails, "KERNEL_EXPAND_STACK_ACTIVE\n"); break;
|
---|
562 | case 0x00000108: cchUsed = RTStrPrintf(pszDetails, cbDetails, "THIRD_PARTY_FILE_SYSTEM_FAILURE\n"); break;
|
---|
563 | case 0x00000109: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CRITICAL_STRUCTURE_CORRUPTION\n"); break;
|
---|
564 | case 0x0000010a: cchUsed = RTStrPrintf(pszDetails, cbDetails, "APP_TAGGING_INITIALIZATION_FAILED\n"); break;
|
---|
565 | case 0x0000010b: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DFSC_FILE_SYSTEM\n"); break;
|
---|
566 | case 0x0000010c: cchUsed = RTStrPrintf(pszDetails, cbDetails, "FSRTL_EXTRA_CREATE_PARAMETER_VIOLATION\n"); break;
|
---|
567 | case 0x0000010d: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WDF_VIOLATION\n"); break;
|
---|
568 | case 0x0000010e: cchUsed = RTStrPrintf(pszDetails, cbDetails, "VIDEO_MEMORY_MANAGEMENT_INTERNAL\n"); break;
|
---|
569 | case 0x00000110: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_INVALID_CRUNTIME_PARAMETER\n"); break;
|
---|
570 | case 0x00000111: cchUsed = RTStrPrintf(pszDetails, cbDetails, "RECURSIVE_NMI\n"); break;
|
---|
571 | case 0x00000112: cchUsed = RTStrPrintf(pszDetails, cbDetails, "MSRPC_STATE_VIOLATION\n"); break;
|
---|
572 | case 0x00000113: cchUsed = RTStrPrintf(pszDetails, cbDetails, "VIDEO_DXGKRNL_FATAL_ERROR\n"); break;
|
---|
573 | case 0x00000114: cchUsed = RTStrPrintf(pszDetails, cbDetails, "VIDEO_SHADOW_DRIVER_FATAL_ERROR\n"); break;
|
---|
574 | case 0x00000115: cchUsed = RTStrPrintf(pszDetails, cbDetails, "AGP_INTERNAL\n"); break;
|
---|
575 | case 0x00000116: cchUsed = RTStrPrintf(pszDetails, cbDetails, "VIDEO_TDR_FAILURE\n"); break;
|
---|
576 | case 0x00000117: cchUsed = RTStrPrintf(pszDetails, cbDetails, "VIDEO_TDR_TIMEOUT_DETECTED\n"); break;
|
---|
577 | case 0x00000118: cchUsed = RTStrPrintf(pszDetails, cbDetails, "NTHV_GUEST_ERROR\n"); break;
|
---|
578 | case 0x00000119: cchUsed = RTStrPrintf(pszDetails, cbDetails, "VIDEO_SCHEDULER_INTERNAL_ERROR\n"); break;
|
---|
579 | case 0x0000011a: cchUsed = RTStrPrintf(pszDetails, cbDetails, "EM_INITIALIZATION_ERROR\n"); break;
|
---|
580 | case 0x0000011b: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_RETURNED_HOLDING_CANCEL_LOCK\n"); break;
|
---|
581 | case 0x0000011c: cchUsed = RTStrPrintf(pszDetails, cbDetails, "ATTEMPTED_WRITE_TO_CM_PROTECTED_STORAGE\n"); break;
|
---|
582 | case 0x0000011d: cchUsed = RTStrPrintf(pszDetails, cbDetails, "EVENT_TRACING_FATAL_ERROR\n"); break;
|
---|
583 | case 0x0000011e: cchUsed = RTStrPrintf(pszDetails, cbDetails, "TOO_MANY_RECURSIVE_FAULTS\n"); break;
|
---|
584 | case 0x0000011f: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INVALID_DRIVER_HANDLE\n"); break;
|
---|
585 | case 0x00000120: cchUsed = RTStrPrintf(pszDetails, cbDetails, "BITLOCKER_FATAL_ERROR\n"); break;
|
---|
586 | case 0x00000121: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_VIOLATION\n"); break;
|
---|
587 | case 0x00000122: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WHEA_INTERNAL_ERROR\n"); break;
|
---|
588 | case 0x00000123: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CRYPTO_SELF_TEST_FAILURE\n"); break;
|
---|
589 | case 0x00000124: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WHEA_UNCORRECTABLE_ERROR\n"); break;
|
---|
590 | case 0x00000125: cchUsed = RTStrPrintf(pszDetails, cbDetails, "NMR_INVALID_STATE\n"); break;
|
---|
591 | case 0x00000126: cchUsed = RTStrPrintf(pszDetails, cbDetails, "NETIO_INVALID_POOL_CALLER\n"); break;
|
---|
592 | case 0x00000127: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PAGE_NOT_ZERO\n"); break;
|
---|
593 | case 0x00000128: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WORKER_THREAD_RETURNED_WITH_BAD_IO_PRIORITY\n"); break;
|
---|
594 | case 0x00000129: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WORKER_THREAD_RETURNED_WITH_BAD_PAGING_IO_PRIORITY\n"); break;
|
---|
595 | case 0x0000012a: cchUsed = RTStrPrintf(pszDetails, cbDetails, "MUI_NO_VALID_SYSTEM_LANGUAGE\n"); break;
|
---|
596 | case 0x0000012b: cchUsed = RTStrPrintf(pszDetails, cbDetails, "FAULTY_HARDWARE_CORRUPTED_PAGE\n"); break;
|
---|
597 | case 0x0000012c: cchUsed = RTStrPrintf(pszDetails, cbDetails, "EXFAT_FILE_SYSTEM\n"); break;
|
---|
598 | case 0x0000012d: cchUsed = RTStrPrintf(pszDetails, cbDetails, "VOLSNAP_OVERLAPPED_TABLE_ACCESS\n"); break;
|
---|
599 | case 0x0000012e: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INVALID_MDL_RANGE\n"); break;
|
---|
600 | case 0x0000012f: cchUsed = RTStrPrintf(pszDetails, cbDetails, "VHD_BOOT_INITIALIZATION_FAILED\n"); break;
|
---|
601 | case 0x00000130: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DYNAMIC_ADD_PROCESSOR_MISMATCH\n"); break;
|
---|
602 | case 0x00000131: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INVALID_EXTENDED_PROCESSOR_STATE\n"); break;
|
---|
603 | case 0x00000132: cchUsed = RTStrPrintf(pszDetails, cbDetails, "RESOURCE_OWNER_POINTER_INVALID\n"); break;
|
---|
604 | case 0x00000133: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DPC_WATCHDOG_VIOLATION\n"); break;
|
---|
605 | case 0x00000134: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVE_EXTENDER\n"); break;
|
---|
606 | case 0x00000135: cchUsed = RTStrPrintf(pszDetails, cbDetails, "REGISTRY_FILTER_DRIVER_EXCEPTION\n"); break;
|
---|
607 | case 0x00000136: cchUsed = RTStrPrintf(pszDetails, cbDetails, "VHD_BOOT_HOST_VOLUME_NOT_ENOUGH_SPACE\n"); break;
|
---|
608 | case 0x00000137: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WIN32K_HANDLE_MANAGER\n"); break;
|
---|
609 | case 0x00000138: cchUsed = RTStrPrintf(pszDetails, cbDetails, "GPIO_CONTROLLER_DRIVER_ERROR\n"); break;
|
---|
610 |
|
---|
611 | case 0x00000139: /* __fastfail(P1) triggers this via INT 29h(?) and P1 in rcx. */
|
---|
612 | {
|
---|
613 | const char *pszCheck;
|
---|
614 | switch (uP1)
|
---|
615 | {
|
---|
616 | case 0x00: pszCheck = "Stack buffer overrun (/GS)"; break;
|
---|
617 | case 0x01: pszCheck = "Illegal virtual function table use (VTGuard)"; break;
|
---|
618 | case 0x02: pszCheck = "Stack buffer overrun (via cookie)"; break;
|
---|
619 | case 0x03: pszCheck = "Correupt LIST_ENTRY"; break;
|
---|
620 | case 0x04: pszCheck = "Out of bounds stack pointer"; break; /* "Reserved" on learn.microsoft.com */
|
---|
621 | case 0x05: pszCheck = "Invalid parameter (fatal)"; break;
|
---|
622 | case 0x06: pszCheck = "Uninitialized stack cookie (by loader prior to Win8)"; break;
|
---|
623 | case 0x07: pszCheck = "Fatal program exit request"; break;
|
---|
624 | case 0x08: pszCheck = "Compiler bounds check violation"; break;
|
---|
625 | case 0x09: pszCheck = "Direct RtlQueryRegistryValues w/o typechecking on untrusted hive"; break;
|
---|
626 | /* https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/bug-check---bug-check-0x139-kernel-security-check-failure
|
---|
627 | and !analyze -show differs on the following. Looks like a decimal/hex mixup.
|
---|
628 | Using the web info, hoping it is more accurate (matches 0x1d better)... */
|
---|
629 | case 0x0a: pszCheck = "Invalid indirect control transfer (call guard)"; break;
|
---|
630 | case 0x0b: pszCheck = "Invalid memory write (write guard)"; break;
|
---|
631 | case 0x0c: pszCheck = "Invalid context for fiber switch"; break;
|
---|
632 | case 0x0d: pszCheck = "Invalid register context (in assignment)"; break;
|
---|
633 | case 0x0e: pszCheck = "Invalid object reference count"; break;
|
---|
634 |
|
---|
635 | case 0x0f: pszCheck = "Memory safety violation [?]"; break; /* windbg; undocument on learn.microsoft.com */
|
---|
636 | case 0x10: pszCheck = "Invalid indirect call (call guard) [?]"; break; /* ditto */
|
---|
637 | case 0x11: pszCheck = "Invalid memory write (write guard) [?]"; break; /* ditto */
|
---|
638 |
|
---|
639 | case 0x12: pszCheck = "Invalid jmp_buf;"; break;
|
---|
640 | case 0x13: pszCheck = "Modifying read-only data"; break;
|
---|
641 | case 0x14: pszCheck = "Crypto self-test fail"; break;
|
---|
642 | case 0x15: pszCheck = "Invalid exception chain"; break;
|
---|
643 | case 0x16: pszCheck = "Crypto library error"; break;
|
---|
644 | case 0x17: pszCheck = "Invalid call from within DllMain"; break; /* sounds very userlandish... */
|
---|
645 | case 0x18: pszCheck = "Invalid image base address"; break;
|
---|
646 | case 0x19: pszCheck = "Problem protecting delay load import."; break;
|
---|
647 | case 0x1a: pszCheck = "Call to unsafe extension"; break;
|
---|
648 | case 0x1b: pszCheck = "Deprecated service call"; break;
|
---|
649 | case 0x1c: pszCheck = "Out of bounce buffer access"; break;
|
---|
650 | case 0x1d: pszCheck = "Corrupt RTL_BALANCED_NODE (often heap related)"; break;
|
---|
651 |
|
---|
652 | case 0x23: pszCheck = "RtlpHpAllocWithExceptionProtection/RtlpHpFreeWithExceptionProtection problem"; break; /* disas */
|
---|
653 |
|
---|
654 | case 0x25: pszCheck = "Out of bound jump table (switch) attempt"; break;
|
---|
655 | case 0x26: pszCheck = "Bogus longjmp target"; break;
|
---|
656 | case 0x27: pszCheck = "Invalid call target (export suppressed; RtlUnwindEx,RtlDispatchException)"; break;
|
---|
657 |
|
---|
658 | case 0x32: pszCheck = "RtlpHpFixedVsFree problem"; break; /* disas */
|
---|
659 |
|
---|
660 | default: pszCheck = "Todo/Unknown"; break;
|
---|
661 | }
|
---|
662 | cchUsed = RTStrPrintf(pszDetails, cbDetails,
|
---|
663 | "KERNEL_SECURITY_CHECK_FAILURE\n"
|
---|
664 | "P1: %016RX64 - %s!\n"
|
---|
665 | "P2: %016RX64 - Trap frame address\n"
|
---|
666 | "P3: %016RX64 - Exception record\n"
|
---|
667 | "P4: %016RX64 - reserved\n", uP1, pszCheck, uP2, uP3, uP4);
|
---|
668 | break;
|
---|
669 | }
|
---|
670 |
|
---|
671 | case 0x0000013a:
|
---|
672 | {
|
---|
673 | const char *pszCheck;
|
---|
674 | switch (uP1)
|
---|
675 | {
|
---|
676 | case 0x03: pszCheck = "a corrupt entry header"; break;
|
---|
677 | case 0x04: pszCheck = "multiple corrupt entry headers"; break;
|
---|
678 | case 0x05: pszCheck = "a corrupt entry header for a large allocation"; break;
|
---|
679 | case 0x06: pszCheck = "buffer overrun (possibly)"; break;
|
---|
680 | case 0x07: pszCheck = "buffer underrun (possibly)"; break;
|
---|
681 | case 0x08: pszCheck = "block is not busy - it is free"; break; /* same as 0xf? */
|
---|
682 | case 0x09: pszCheck = "invalid argument"; break;
|
---|
683 | case 0x0a: pszCheck = "invalid allocation type"; break;
|
---|
684 | case 0x0b: pszCheck = "use after free (possibly)"; break;
|
---|
685 | case 0x0c: pszCheck = "wrong heap given"; break;
|
---|
686 | case 0x0d: pszCheck = "free list corruption"; break;
|
---|
687 | case 0x0e: pszCheck = "non-free list corruption"; break;
|
---|
688 | case 0x0f: pszCheck = "block is not busy - it is free"; break; /* same as 0x8? */
|
---|
689 | case 0x10: pszCheck = "bogus state due to buffer overrun (possibly)"; break;
|
---|
690 | case 0x11: pszCheck = "bogus state due to buffer overrun (possibly)"; break;
|
---|
691 | case 0x12: pszCheck = "bogus state due to buffer overrun (possibly)"; break;
|
---|
692 | case 0x13: pszCheck = "NULL heap handle"; break;
|
---|
693 | case 0x14: pszCheck = "request too big"; break;
|
---|
694 | case 0x15: pszCheck = "commit limit exceeded"; break;
|
---|
695 | case 0x16: pszCheck = "invalid VA manage query size/whatever"; break;
|
---|
696 | default: pszCheck = "Todo/Unknown"; break;
|
---|
697 | }
|
---|
698 |
|
---|
699 | cchUsed = RTStrPrintf(pszDetails, cbDetails,
|
---|
700 | "KERNEL_MODE_HEAP_CORRUPTION\n"
|
---|
701 | "P1: %016RX64 - %s!\n"
|
---|
702 | "P2: %016RX64 - Heap address\n"
|
---|
703 | "P3: %016RX64 - Corruption address\n"
|
---|
704 | "P4: %016RX64 - reserved\n", uP1, pszCheck, uP2, uP3, uP4);
|
---|
705 | break;
|
---|
706 | }
|
---|
707 | case 0x0000013b: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PASSIVE_INTERRUPT_ERROR\n"); break;
|
---|
708 | case 0x0000013c: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INVALID_IO_BOOST_STATE\n"); break;
|
---|
709 | case 0x0000013d: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CRITICAL_INITIALIZATION_FAILURE\n"); break;
|
---|
710 | case 0x0000013e: cchUsed = RTStrPrintf(pszDetails, cbDetails, "ERRATA_WORKAROUND_UNSUCCESSFUL\n"); break;
|
---|
711 | case 0x00000140: cchUsed = RTStrPrintf(pszDetails, cbDetails, "STORAGE_DEVICE_ABNORMALITY_DETECTED\n"); break;
|
---|
712 | case 0x00000141: cchUsed = RTStrPrintf(pszDetails, cbDetails, "VIDEO_ENGINE_TIMEOUT_DETECTED\n"); break;
|
---|
713 | case 0x00000142: cchUsed = RTStrPrintf(pszDetails, cbDetails, "VIDEO_TDR_APPLICATION_BLOCKED\n"); break;
|
---|
714 | case 0x00000143: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PROCESSOR_DRIVER_INTERNAL\n"); break;
|
---|
715 | case 0x00000144: cchUsed = RTStrPrintf(pszDetails, cbDetails, "BUGCODE_USB3_DRIVER\n"); break;
|
---|
716 | case 0x00000145: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SECURE_BOOT_VIOLATION\n"); break;
|
---|
717 | case 0x00000146: cchUsed = RTStrPrintf(pszDetails, cbDetails, "NDIS_NET_BUFFER_LIST_INFO_ILLEGALLY_TRANSFERRED\n"); break;
|
---|
718 | case 0x00000147: cchUsed = RTStrPrintf(pszDetails, cbDetails, "ABNORMAL_RESET_DETECTED\n"); break;
|
---|
719 | case 0x00000148: cchUsed = RTStrPrintf(pszDetails, cbDetails, "IO_OBJECT_INVALID\n"); break;
|
---|
720 | case 0x00000149: cchUsed = RTStrPrintf(pszDetails, cbDetails, "REFS_FILE_SYSTEM\n"); break;
|
---|
721 | case 0x0000014a: cchUsed = RTStrPrintf(pszDetails, cbDetails, "KERNEL_WMI_INTERNAL\n"); break;
|
---|
722 | case 0x0000014b: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SOC_SUBSYSTEM_FAILURE\n"); break;
|
---|
723 | case 0x0000014c: cchUsed = RTStrPrintf(pszDetails, cbDetails, "FATAL_ABNORMAL_RESET_ERROR\n"); break;
|
---|
724 | case 0x0000014d: cchUsed = RTStrPrintf(pszDetails, cbDetails, "EXCEPTION_SCOPE_INVALID\n"); break;
|
---|
725 | case 0x0000014e: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SOC_CRITICAL_DEVICE_REMOVED\n"); break;
|
---|
726 | case 0x0000014f: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PDC_WATCHDOG_TIMEOUT\n"); break;
|
---|
727 | case 0x00000150: cchUsed = RTStrPrintf(pszDetails, cbDetails, "TCPIP_AOAC_NIC_ACTIVE_REFERENCE_LEAK\n"); break;
|
---|
728 | case 0x00000151: cchUsed = RTStrPrintf(pszDetails, cbDetails, "UNSUPPORTED_INSTRUCTION_MODE\n"); break;
|
---|
729 | case 0x00000152: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INVALID_PUSH_LOCK_FLAGS\n"); break;
|
---|
730 | case 0x00000153: cchUsed = RTStrPrintf(pszDetails, cbDetails, "KERNEL_LOCK_ENTRY_LEAKED_ON_THREAD_TERMINATION\n"); break;
|
---|
731 | case 0x00000154: cchUsed = RTStrPrintf(pszDetails, cbDetails, "UNEXPECTED_STORE_EXCEPTION\n"); break;
|
---|
732 | case 0x00000155: cchUsed = RTStrPrintf(pszDetails, cbDetails, "OS_DATA_TAMPERING\n"); break;
|
---|
733 | case 0x00000156: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WINSOCK_DETECTED_HUNG_CLOSESOCKET_LIVEDUMP\n"); break;
|
---|
734 | case 0x00000157: cchUsed = RTStrPrintf(pszDetails, cbDetails, "KERNEL_THREAD_PRIORITY_FLOOR_VIOLATION\n"); break;
|
---|
735 | case 0x00000158: cchUsed = RTStrPrintf(pszDetails, cbDetails, "ILLEGAL_IOMMU_PAGE_FAULT\n"); break;
|
---|
736 | case 0x00000159: cchUsed = RTStrPrintf(pszDetails, cbDetails, "HAL_ILLEGAL_IOMMU_PAGE_FAULT\n"); break;
|
---|
737 | case 0x0000015a: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SDBUS_INTERNAL_ERROR\n"); break;
|
---|
738 | case 0x0000015b: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WORKER_THREAD_RETURNED_WITH_SYSTEM_PAGE_PRIORITY_ACTIVE\n"); break;
|
---|
739 | case 0x0000015c: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PDC_WATCHDOG_TIMEOUT_LIVEDUMP\n"); break;
|
---|
740 | case 0x0000015d: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SOC_SUBSYSTEM_FAILURE_LIVEDUMP\n"); break;
|
---|
741 | case 0x0000015e: cchUsed = RTStrPrintf(pszDetails, cbDetails, "BUGCODE_NDIS_DRIVER_LIVE_DUMP\n"); break;
|
---|
742 | case 0x0000015f: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CONNECTED_STANDBY_WATCHDOG_TIMEOUT_LIVEDUMP\n"); break;
|
---|
743 | case 0x00000160: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WIN32K_ATOMIC_CHECK_FAILURE\n"); break;
|
---|
744 | case 0x00000161: cchUsed = RTStrPrintf(pszDetails, cbDetails, "LIVE_SYSTEM_DUMP\n"); break;
|
---|
745 | case 0x00000162: cchUsed = RTStrPrintf(pszDetails, cbDetails, "KERNEL_AUTO_BOOST_INVALID_LOCK_RELEASE\n"); break;
|
---|
746 | case 0x00000163: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WORKER_THREAD_TEST_CONDITION\n"); break;
|
---|
747 | case 0x00000164: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WIN32K_CRITICAL_FAILURE\n"); break;
|
---|
748 | case 0x00000165: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CLUSTER_CSV_STATUS_IO_TIMEOUT_LIVEDUMP\n"); break;
|
---|
749 | case 0x00000166: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CLUSTER_RESOURCE_CALL_TIMEOUT_LIVEDUMP\n"); break;
|
---|
750 | case 0x00000167: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CLUSTER_CSV_SNAPSHOT_DEVICE_INFO_TIMEOUT_LIVEDUMP\n"); break;
|
---|
751 | case 0x00000168: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CLUSTER_CSV_STATE_TRANSITION_TIMEOUT_LIVEDUMP\n"); break;
|
---|
752 | case 0x00000169: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CLUSTER_CSV_VOLUME_ARRIVAL_LIVEDUMP\n"); break;
|
---|
753 | case 0x0000016a: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CLUSTER_CSV_VOLUME_REMOVAL_LIVEDUMP\n"); break;
|
---|
754 | case 0x0000016b: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CLUSTER_CSV_CLUSTER_WATCHDOG_LIVEDUMP\n"); break;
|
---|
755 | case 0x0000016c: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INVALID_RUNDOWN_PROTECTION_FLAGS\n"); break;
|
---|
756 | case 0x0000016d: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INVALID_SLOT_ALLOCATOR_FLAGS\n"); break;
|
---|
757 | case 0x0000016e: cchUsed = RTStrPrintf(pszDetails, cbDetails, "ERESOURCE_INVALID_RELEASE\n"); break;
|
---|
758 | case 0x0000016f: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CLUSTER_CSV_STATE_TRANSITION_INTERVAL_TIMEOUT_LIVEDUMP\n"); break;
|
---|
759 | case 0x00000170: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CLUSTER_CSV_CLUSSVC_DISCONNECT_WATCHDOG\n"); break;
|
---|
760 | case 0x00000171: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CRYPTO_LIBRARY_INTERNAL_ERROR\n"); break;
|
---|
761 | case 0x00000173: cchUsed = RTStrPrintf(pszDetails, cbDetails, "COREMSGCALL_INTERNAL_ERROR\n"); break;
|
---|
762 | case 0x00000174: cchUsed = RTStrPrintf(pszDetails, cbDetails, "COREMSG_INTERNAL_ERROR\n"); break;
|
---|
763 | case 0x00000175: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PREVIOUS_FATAL_ABNORMAL_RESET_ERROR\n"); break;
|
---|
764 | case 0x00000178: cchUsed = RTStrPrintf(pszDetails, cbDetails, "ELAM_DRIVER_DETECTED_FATAL_ERROR\n"); break;
|
---|
765 | case 0x00000179: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CLUSTER_CLUSPORT_STATUS_IO_TIMEOUT_LIVEDUMP\n"); break;
|
---|
766 | case 0x0000017b: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PROFILER_CONFIGURATION_ILLEGAL\n"); break;
|
---|
767 | case 0x0000017c: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PDC_LOCK_WATCHDOG_LIVEDUMP\n"); break;
|
---|
768 | case 0x0000017d: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PDC_UNEXPECTED_REVOCATION_LIVEDUMP\n"); break;
|
---|
769 | case 0x00000180: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WVR_LIVEDUMP_REPLICATION_IOCONTEXT_TIMEOUT\n"); break;
|
---|
770 | case 0x00000181: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WVR_LIVEDUMP_STATE_TRANSITION_TIMEOUT\n"); break;
|
---|
771 | case 0x00000182: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WVR_LIVEDUMP_RECOVERY_IOCONTEXT_TIMEOUT\n"); break;
|
---|
772 | case 0x00000183: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WVR_LIVEDUMP_APP_IO_TIMEOUT\n"); break;
|
---|
773 | case 0x00000184: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WVR_LIVEDUMP_MANUALLY_INITIATED\n"); break;
|
---|
774 | case 0x00000185: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WVR_LIVEDUMP_STATE_FAILURE\n"); break;
|
---|
775 | case 0x00000186: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WVR_LIVEDUMP_CRITICAL_ERROR\n"); break;
|
---|
776 | case 0x00000187: cchUsed = RTStrPrintf(pszDetails, cbDetails, "VIDEO_DWMINIT_TIMEOUT_FALLBACK_BDD\n"); break;
|
---|
777 | case 0x00000188: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CLUSTER_CSVFS_LIVEDUMP\n"); break;
|
---|
778 | case 0x00000189: cchUsed = RTStrPrintf(pszDetails, cbDetails, "BAD_OBJECT_HEADER\n"); break;
|
---|
779 | case 0x0000018a: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SILO_CORRUPT\n"); break;
|
---|
780 | case 0x0000018b: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SECURE_KERNEL_ERROR\n"); break;
|
---|
781 | case 0x0000018c: cchUsed = RTStrPrintf(pszDetails, cbDetails, "HYPERGUARD_VIOLATION\n"); break;
|
---|
782 | case 0x0000018d: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SECURE_FAULT_UNHANDLED\n"); break;
|
---|
783 | case 0x0000018e: cchUsed = RTStrPrintf(pszDetails, cbDetails, "KERNEL_PARTITION_REFERENCE_VIOLATION\n"); break;
|
---|
784 | case 0x00000190: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WIN32K_CRITICAL_FAILURE_LIVEDUMP\n"); break;
|
---|
785 | case 0x00000191: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PF_DETECTED_CORRUPTION\n"); break;
|
---|
786 | case 0x00000192: cchUsed = RTStrPrintf(pszDetails, cbDetails, "KERNEL_AUTO_BOOST_LOCK_ACQUISITION_WITH_RAISED_IRQL\n"); break;
|
---|
787 | case 0x00000193: cchUsed = RTStrPrintf(pszDetails, cbDetails, "VIDEO_DXGKRNL_LIVEDUMP\n"); break;
|
---|
788 | case 0x00000194: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_NONRESPONSIVEPROCESS\n"); break;
|
---|
789 | case 0x00000195: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SMB_SERVER_LIVEDUMP\n"); break;
|
---|
790 | case 0x00000196: cchUsed = RTStrPrintf(pszDetails, cbDetails, "LOADER_ROLLBACK_DETECTED\n"); break;
|
---|
791 | case 0x00000197: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WIN32K_SECURITY_FAILURE\n"); break;
|
---|
792 | case 0x00000198: cchUsed = RTStrPrintf(pszDetails, cbDetails, "UFX_LIVEDUMP\n"); break;
|
---|
793 | case 0x00000199: cchUsed = RTStrPrintf(pszDetails, cbDetails, "KERNEL_STORAGE_SLOT_IN_USE\n"); break;
|
---|
794 | case 0x0000019a: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WORKER_THREAD_RETURNED_WHILE_ATTACHED_TO_SILO\n"); break;
|
---|
795 | case 0x0000019b: cchUsed = RTStrPrintf(pszDetails, cbDetails, "TTM_FATAL_ERROR\n"); break;
|
---|
796 | case 0x0000019c: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WIN32K_POWER_WATCHDOG_TIMEOUT\n"); break;
|
---|
797 | case 0x0000019d: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CLUSTER_SVHDX_LIVEDUMP\n"); break;
|
---|
798 | case 0x0000019e: cchUsed = RTStrPrintf(pszDetails, cbDetails, "BUGCODE_NETADAPTER_DRIVER\n"); break;
|
---|
799 | case 0x0000019f: cchUsed = RTStrPrintf(pszDetails, cbDetails, "PDC_PRIVILEGE_CHECK_LIVEDUMP\n"); break;
|
---|
800 | case 0x000001a0: cchUsed = RTStrPrintf(pszDetails, cbDetails, "TTM_WATCHDOG_TIMEOUT\n"); break;
|
---|
801 | case 0x000001a1: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WIN32K_CALLOUT_WATCHDOG_LIVEDUMP\n"); break;
|
---|
802 | case 0x000001a2: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WIN32K_CALLOUT_WATCHDOG_BUGCHECK\n"); break;
|
---|
803 | case 0x000001a3: cchUsed = RTStrPrintf(pszDetails, cbDetails, "CALL_HAS_NOT_RETURNED_WATCHDOG_TIMEOUT_LIVEDUMP\n"); break;
|
---|
804 | case 0x000001a4: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIPS_SW_HW_DIVERGENCE_LIVEDUMP\n"); break;
|
---|
805 | case 0x000001a5: cchUsed = RTStrPrintf(pszDetails, cbDetails, "USB_DRIPS_BLOCKER_SURPRISE_REMOVAL_LIVEDUMP\n"); break;
|
---|
806 | case 0x000001c4: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_VERIFIER_DETECTED_VIOLATION_LIVEDUMP\n"); break;
|
---|
807 | case 0x000001c5: cchUsed = RTStrPrintf(pszDetails, cbDetails, "IO_THREADPOOL_DEADLOCK_LIVEDUMP\n"); break;
|
---|
808 | case 0x000001c6: cchUsed = RTStrPrintf(pszDetails, cbDetails, "FAST_ERESOURCE_PRECONDITION_VIOLATION\n"); break;
|
---|
809 | case 0x000001c7: cchUsed = RTStrPrintf(pszDetails, cbDetails, "STORE_DATA_STRUCTURE_CORRUPTION\n"); break;
|
---|
810 | case 0x000001c8: cchUsed = RTStrPrintf(pszDetails, cbDetails, "MANUALLY_INITIATED_POWER_BUTTON_HOLD\n"); break;
|
---|
811 | case 0x000001c9: cchUsed = RTStrPrintf(pszDetails, cbDetails, "USER_MODE_HEALTH_MONITOR_LIVEDUMP\n"); break;
|
---|
812 | case 0x000001ca: cchUsed = RTStrPrintf(pszDetails, cbDetails, "HYPERVISOR_WATCHDOG_TIMEOUT\n"); break;
|
---|
813 | case 0x000001cb: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INVALID_SILO_DETACH\n"); break;
|
---|
814 | case 0x000001cc: cchUsed = RTStrPrintf(pszDetails, cbDetails, "EXRESOURCE_TIMEOUT_LIVEDUMP\n"); break;
|
---|
815 | case 0x000001cd: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INVALID_CALLBACK_STACK_ADDRESS\n"); break;
|
---|
816 | case 0x000001ce: cchUsed = RTStrPrintf(pszDetails, cbDetails, "INVALID_KERNEL_STACK_ADDRESS\n"); break;
|
---|
817 | case 0x000001cf: cchUsed = RTStrPrintf(pszDetails, cbDetails, "HARDWARE_WATCHDOG_TIMEOUT\n"); break;
|
---|
818 | case 0x000001d0: cchUsed = RTStrPrintf(pszDetails, cbDetails, "ACPI_FIRMWARE_WATCHDOG_TIMEOUT\n"); break;
|
---|
819 | case 0x000001d1: cchUsed = RTStrPrintf(pszDetails, cbDetails, "TELEMETRY_ASSERTS_LIVEDUMP\n"); break;
|
---|
820 | case 0x000001d2: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WORKER_THREAD_INVALID_STATE\n"); break;
|
---|
821 | case 0x000001d3: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WFP_INVALID_OPERATION\n"); break;
|
---|
822 | case 0x000001d4: cchUsed = RTStrPrintf(pszDetails, cbDetails, "UCMUCSI_LIVEDUMP\n"); break;
|
---|
823 | case 0x000001d5: cchUsed = RTStrPrintf(pszDetails, cbDetails, "DRIVER_PNP_WATCHDOG\n"); break;
|
---|
824 | case 0x00000315: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_MTBFCOMMANDTIMEOUT\n"); break;
|
---|
825 | case 0x00000356: cchUsed = RTStrPrintf(pszDetails, cbDetails, "XBOX_ERACTRL_CS_TIMEOUT\n"); break;
|
---|
826 | case 0x00000357: cchUsed = RTStrPrintf(pszDetails, cbDetails, "XBOX_CORRUPTED_IMAGE\n"); break;
|
---|
827 | case 0x00000358: cchUsed = RTStrPrintf(pszDetails, cbDetails, "XBOX_INVERTED_FUNCTION_TABLE_OVERFLOW\n"); break;
|
---|
828 | case 0x00000359: cchUsed = RTStrPrintf(pszDetails, cbDetails, "XBOX_CORRUPTED_IMAGE_BASE\n"); break;
|
---|
829 | case 0x00000360: cchUsed = RTStrPrintf(pszDetails, cbDetails, "XBOX_360_SYSTEM_CRASH\n"); break;
|
---|
830 | case 0x00000420: cchUsed = RTStrPrintf(pszDetails, cbDetails, "XBOX_360_SYSTEM_CRASH_RESERVED\n"); break;
|
---|
831 | case 0x00000bfe: cchUsed = RTStrPrintf(pszDetails, cbDetails, "BC_BLUETOOTH_VERIFIER_FAULT\n"); break;
|
---|
832 | case 0x00000bff: cchUsed = RTStrPrintf(pszDetails, cbDetails, "BC_BTHMINI_VERIFIER_FAULT\n"); break;
|
---|
833 | case 0x00008866: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_SICKAPPLICATION\n"); break;
|
---|
834 | case 0x0000f000: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_UNSPECIFIED\n"); break;
|
---|
835 | case 0x0000f002: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_BLANKSCREEN\n"); break;
|
---|
836 | case 0x0000f003: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_INPUT\n"); break;
|
---|
837 | case 0x0000f004: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_WATCHDOG\n"); break;
|
---|
838 | case 0x0000f005: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_STARTNOTVISIBLE\n"); break;
|
---|
839 | case 0x0000f006: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_NAVIGATIONMODEL\n"); break;
|
---|
840 | case 0x0000f007: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_OUTOFMEMORY\n"); break;
|
---|
841 | case 0x0000f008: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_GRAPHICS\n"); break;
|
---|
842 | case 0x0000f009: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_NAVSERVERTIMEOUT\n"); break;
|
---|
843 | case 0x0000f00a: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_CHROMEPROCESSCRASH\n"); break;
|
---|
844 | case 0x0000f00b: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_NOTIFICATIONDISMISSAL\n"); break;
|
---|
845 | case 0x0000f00c: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_SPEECHDISMISSAL\n"); break;
|
---|
846 | case 0x0000f00d: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_CALLDISMISSAL\n"); break;
|
---|
847 | case 0x0000f00e: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_APPBARDISMISSAL\n"); break;
|
---|
848 | case 0x0000f00f: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_RILADAPTATIONCRASH\n"); break;
|
---|
849 | case 0x0000f010: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_APPLISTUNREACHABLE\n"); break;
|
---|
850 | case 0x0000f011: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_REPORTNOTIFICATIONFAILURE\n"); break;
|
---|
851 | case 0x0000f012: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_UNEXPECTEDSHUTDOWN\n"); break;
|
---|
852 | case 0x0000f013: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_RPCFAILURE\n"); break;
|
---|
853 | case 0x0000f014: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_AUXILIARYFULLDUMP\n"); break;
|
---|
854 | case 0x0000f015: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_ACCOUNTPROVSVCINITFAILURE\n"); break;
|
---|
855 | case 0x0000f101: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_MTBFCOMMANDHANG\n"); break;
|
---|
856 | case 0x0000f102: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_MTBFPASSBUGCHECK\n"); break;
|
---|
857 | case 0x0000f103: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_MTBFIOERROR\n"); break;
|
---|
858 | case 0x0000f200: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_RENDERTHREADHANG\n"); break;
|
---|
859 | case 0x0000f201: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_RENDERMOBILEUIOOM\n"); break;
|
---|
860 | case 0x0000f300: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_DEVICEUPDATEUNSPECIFIED\n"); break;
|
---|
861 | case 0x0000f400: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_AUDIODRIVERHANG\n"); break;
|
---|
862 | case 0x0000f500: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_BATTERYPULLOUT\n"); break;
|
---|
863 | case 0x0000f600: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_MEDIACORETESTHANG\n"); break;
|
---|
864 | case 0x0000f700: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_RESOURCEMANAGEMENT\n"); break;
|
---|
865 | case 0x0000f800: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_CAPTURESERVICE\n"); break;
|
---|
866 | case 0x0000f900: cchUsed = RTStrPrintf(pszDetails, cbDetails, "SAVER_WAITFORSHELLREADY\n"); break;
|
---|
867 | case 0x00020001: cchUsed = RTStrPrintf(pszDetails, cbDetails, "HYPERVISOR_ERROR\n"); break;
|
---|
868 | case 0x4000008a: cchUsed = RTStrPrintf(pszDetails, cbDetails, "THREAD_TERMINATE_HELD_MUTEX\n"); break;
|
---|
869 | case 0x400000ad: cchUsed = RTStrPrintf(pszDetails, cbDetails, "VIDEO_DRIVER_DEBUG_REPORT_REQUEST\n"); break;
|
---|
870 | case 0xc000021a: cchUsed = RTStrPrintf(pszDetails, cbDetails, "WINLOGON_FATAL_ERROR\n"); break;
|
---|
871 | case 0xdeaddead: cchUsed = RTStrPrintf(pszDetails, cbDetails, "MANUALLY_INITIATED_CRASH1\n"); break;
|
---|
872 | default: cchUsed = 0; break;
|
---|
873 | }
|
---|
874 | if (cchUsed < cbDetails)
|
---|
875 | return VINF_SUCCESS;
|
---|
876 | return VINF_BUFFER_OVERFLOW;
|
---|
877 | }
|
---|
878 |
|
---|
879 |
|
---|
880 | /**
|
---|
881 | * Report a bug check.
|
---|
882 | *
|
---|
883 | * @returns
|
---|
884 | * @param pVM The cross context VM structure.
|
---|
885 | * @param pVCpu The cross context per virtual CPU structure.
|
---|
886 | * @param enmEvent The kind of BSOD event this is.
|
---|
887 | * @param uBugCheck The bug check number.
|
---|
888 | * @param uP1 The bug check parameter \#1.
|
---|
889 | * @param uP2 The bug check parameter \#2.
|
---|
890 | * @param uP3 The bug check parameter \#3.
|
---|
891 | * @param uP4 The bug check parameter \#4.
|
---|
892 | */
|
---|
893 | VMMR3DECL(VBOXSTRICTRC) DBGFR3ReportBugCheck(PVM pVM, PVMCPU pVCpu, DBGFEVENTTYPE enmEvent, uint64_t uBugCheck,
|
---|
894 | uint64_t uP1, uint64_t uP2, uint64_t uP3, uint64_t uP4)
|
---|
895 | {
|
---|
896 | /*
|
---|
897 | * Be careful.
|
---|
898 | */
|
---|
899 | VM_ASSERT_VALID_EXT_RETURN(pVM, VERR_INVALID_VM_HANDLE);
|
---|
900 | VMCPU_ASSERT_EMT_RETURN(pVCpu, VERR_INVALID_VMCPU_HANDLE);
|
---|
901 | const char *pszSource;
|
---|
902 | switch (enmEvent)
|
---|
903 | {
|
---|
904 | case DBGFEVENT_BSOD_MSR: pszSource = "GIMHv"; break;
|
---|
905 | case DBGFEVENT_BSOD_EFI: pszSource = "EFI"; break;
|
---|
906 | case DBGFEVENT_BSOD_VMMDEV: pszSource = "VMMDev"; break;
|
---|
907 | default:
|
---|
908 | AssertMsgFailedReturn(("enmEvent=%d\n", enmEvent), VERR_INVALID_PARAMETER);
|
---|
909 | }
|
---|
910 |
|
---|
911 | /*
|
---|
912 | * Note it down.
|
---|
913 | */
|
---|
914 | pVM->dbgf.s.BugCheck.enmEvent = enmEvent;
|
---|
915 | pVM->dbgf.s.BugCheck.uBugCheck = uBugCheck;
|
---|
916 | pVM->dbgf.s.BugCheck.auParameters[0] = uP1;
|
---|
917 | pVM->dbgf.s.BugCheck.auParameters[1] = uP2;
|
---|
918 | pVM->dbgf.s.BugCheck.auParameters[2] = uP3;
|
---|
919 | pVM->dbgf.s.BugCheck.auParameters[3] = uP4;
|
---|
920 | pVM->dbgf.s.BugCheck.idCpu = pVCpu->idCpu;
|
---|
921 | pVM->dbgf.s.BugCheck.uTimestamp = TMVirtualGet(pVM);
|
---|
922 | pVM->dbgf.s.BugCheck.uResetNo = VMGetResetCount(pVM);
|
---|
923 |
|
---|
924 | /*
|
---|
925 | * Log the details.
|
---|
926 | */
|
---|
927 | char szDetails[2048];
|
---|
928 | DBGFR3FormatBugCheck(pVM->pUVM, szDetails, sizeof(szDetails), uBugCheck, uP1, uP2, uP3, uP4);
|
---|
929 | LogRel(("%s: %s", pszSource, szDetails));
|
---|
930 |
|
---|
931 | /*
|
---|
932 | * Raise debugger event.
|
---|
933 | */
|
---|
934 | VBOXSTRICTRC rc = VINF_SUCCESS;
|
---|
935 | if (DBGF_IS_EVENT_ENABLED(pVM, enmEvent))
|
---|
936 | rc = DBGFEventGenericWithArgs(pVM, pVCpu, enmEvent, DBGFEVENTCTX_OTHER, 5 /*cArgs*/, uBugCheck, uP1, uP2, uP3, uP4);
|
---|
937 |
|
---|
938 | /*
|
---|
939 | * Take actions.
|
---|
940 | */
|
---|
941 | if (pVM->dbgf.s.BugCheck.fCfgPowerOffOnBsod)
|
---|
942 | {
|
---|
943 | RTMsgError("Powering off - guest BSOD: %s\n", szDetails);
|
---|
944 | PUVM const pUVM = pVM->pUVM;
|
---|
945 | VMR3ReqCallNoWaitU(pUVM, VMCPUID_ANY_QUEUE, (PFNRT)VMR3PowerOff, 1, pUVM);
|
---|
946 | }
|
---|
947 | else if (pVM->dbgf.s.BugCheck.fCfgSuspendOnBsod)
|
---|
948 | {
|
---|
949 | RTMsgError("Suspending - guest BSOD: %s\n", szDetails);
|
---|
950 | PUVM const pUVM = pVM->pUVM;
|
---|
951 | VMR3ReqCallNoWaitU(pUVM, VMCPUID_ANY_QUEUE, (PFNRT)VMR3Suspend, 2, pUVM, VMSUSPENDREASON_RUNTIME_ERROR);
|
---|
952 | }
|
---|
953 | return rc;
|
---|
954 | }
|
---|
955 |
|
---|
956 |
|
---|
957 | /**
|
---|
958 | * @callback_method_impl{FNDBGFHANDLERINT, bugcheck}
|
---|
959 | */
|
---|
960 | static DECLCALLBACK(void) dbgfR3BugCheckInfo(PVM pVM, PCDBGFINFOHLP pHlp, const char *pszArgs)
|
---|
961 | {
|
---|
962 | char szDetails[2048];
|
---|
963 |
|
---|
964 | /*
|
---|
965 | * Any arguments for bug check formatting?
|
---|
966 | */
|
---|
967 | if (pszArgs && *pszArgs)
|
---|
968 | pszArgs = RTStrStripL(pszArgs);
|
---|
969 | if (pszArgs && *pszArgs)
|
---|
970 | {
|
---|
971 | uint64_t auData[5] = { 0, 0, 0, 0, 0 };
|
---|
972 | unsigned iData = 0;
|
---|
973 | do
|
---|
974 | {
|
---|
975 | /* Find the next hex digit */
|
---|
976 | char ch;
|
---|
977 | while ((ch = *pszArgs) != '\0' && !RT_C_IS_XDIGIT(ch))
|
---|
978 | pszArgs++;
|
---|
979 | if (ch == '\0')
|
---|
980 | break;
|
---|
981 |
|
---|
982 | /* Extract the number. */
|
---|
983 | char *pszNext = (char *)pszArgs + 1;
|
---|
984 | RTStrToUInt64Ex(pszArgs, &pszNext, 16, &auData[iData]);
|
---|
985 |
|
---|
986 | /* Advance. */
|
---|
987 | pszArgs = pszNext;
|
---|
988 | iData++;
|
---|
989 | } while (iData < RT_ELEMENTS(auData) && *pszArgs);
|
---|
990 |
|
---|
991 | /* Format it. */
|
---|
992 | DBGFR3FormatBugCheck(pVM->pUVM, szDetails, sizeof(szDetails), auData[0], auData[1], auData[2], auData[3], auData[4]);
|
---|
993 | pHlp->pfnPrintf(pHlp, "%s", szDetails);
|
---|
994 | }
|
---|
995 | /*
|
---|
996 | * Format what's been reported (if any).
|
---|
997 | */
|
---|
998 | else if (pVM->dbgf.s.BugCheck.enmEvent != DBGFEVENT_END)
|
---|
999 | {
|
---|
1000 | DBGFR3FormatBugCheck(pVM->pUVM, szDetails, sizeof(szDetails), pVM->dbgf.s.BugCheck.uBugCheck,
|
---|
1001 | pVM->dbgf.s.BugCheck.auParameters[0], pVM->dbgf.s.BugCheck.auParameters[1],
|
---|
1002 | pVM->dbgf.s.BugCheck.auParameters[2], pVM->dbgf.s.BugCheck.auParameters[3]);
|
---|
1003 | const char *pszSource = pVM->dbgf.s.BugCheck.enmEvent == DBGFEVENT_BSOD_MSR ? "GIMHv"
|
---|
1004 | : pVM->dbgf.s.BugCheck.enmEvent == DBGFEVENT_BSOD_EFI ? "EFI"
|
---|
1005 | : pVM->dbgf.s.BugCheck.enmEvent == DBGFEVENT_BSOD_VMMDEV ? "VMMDev" : "<unknown>";
|
---|
1006 | uint32_t const uFreq = TMVirtualGetFreq(pVM);
|
---|
1007 | uint64_t const cSecs = pVM->dbgf.s.BugCheck.uTimestamp / uFreq;
|
---|
1008 | uint32_t const cMillis = (pVM->dbgf.s.BugCheck.uTimestamp - cSecs * uFreq) * 1000 / uFreq;
|
---|
1009 | pHlp->pfnPrintf(pHlp, "BugCheck on CPU #%u after %RU64.%03u s VM uptime, %u resets ago (src: %s)\n%s",
|
---|
1010 | pVM->dbgf.s.BugCheck.idCpu, cSecs, cMillis, VMGetResetCount(pVM) - pVM->dbgf.s.BugCheck.uResetNo,
|
---|
1011 | pszSource, szDetails);
|
---|
1012 | }
|
---|
1013 | else
|
---|
1014 | pHlp->pfnPrintf(pHlp, "No bug check reported.\n");
|
---|
1015 | }
|
---|
1016 |
|
---|