Fix it now
0x000000E2 means somebody deliberately initiated a crash dump, from the kernel debugger or from the keyboard. The crash itself is not a fault; the usual reason for reading about it afterwards is that the dump you wanted was not written.
Get-CimInstance Win32_OSRecoveryConfiguration | Select-Object DebugInfoType, DebugFilePath, AutoReboot, OverwriteExistingDebugFile
- Read DebugInfoType from that output: 0 means no dump is configured at all, 1 complete, 2 kernel, 3 small.
- Set it deliberately: Control Panel, System and Security, System, Advanced system settings, Advanced tab, Startup and Recovery, Settings, then choose the dump type under Writing debugging information.
- Confirm the paging file is on the partition Windows is installed on and large enough for the dump type you chose. The default dump file location is the pagefile.
- Confirm there is enough free space where the dump file itself will be written – by default
%SystemRoot%\Memory.dmp. - Restart, then reproduce the crash and check that the dump file appears.
Event ID 46 from volmgr, ‘Crash dump initialization failed!’, is not evidence of a broken configuration on its own. Microsoft documents its cause as booting without a configured dump file, which is what the first boot of a clean installation does, and says it can be ignored in that case.
If a test crash now produces a dump, you are finished. The next section covers the deliberate-crash mechanisms and the codes that look like them.
Why it happens
Some crashes are requested. Support engineers force one to capture the state of a machine that has hung, administrators force one from a management controller when a server stops responding, and developers force one from a kernel debugger. 0x000000E2 is the code for that: the user deliberately initiated a crash dump from either the kernel debugger or the keyboard. It has no parameters, because there is nothing to diagnose.
0xDEADDEAD is the same event under a different name, MANUALLY_INITIATED_CRASH1, with all four parameters reserved. 0x000001C8 is the newer relative: the system was configured to bug check when the power button is held for a set time, so that a machine about to be hard reset produces a dump instead of losing its state. Parameter 1 is the hold time in milliseconds, and rather than a blue screen the user sees a black screen reading ‘Please release the power button. We just need a few more seconds to shut down.’
The keyboard route has to be enabled in advance and it is keyboard-specific. CrashOnCtrlScroll as a REG_DWORD of 1 goes under the Parameters key of the keyboard driver in use: i8042prt for PS/2, kbdhid for USB and HID, hyperkbd for Hyper-V. Microsoft notes that some laptops use the PS/2 driver for the built-in keyboard while also supporting external HID keyboards, so on those it is worth creating both. Once set and restarted, hold the rightmost Ctrl key and press Scroll Lock twice.
The NMI route is where most stale advice lives. NMICrashDump under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl is not required on clients running Windows 8 and later or servers running Windows Server 2012 and later, and Microsoft states that setting it on later versions has no effect. If a runbook tells you to set it on a current server, that instruction has outlived its usefulness.
No dump type is configured
You have this one if DebugInfoType comes back as 0, and no file appears after a crash.
- Open Startup and Recovery from Advanced system settings and choose a dump type under Writing debugging information.
- Kernel memory dump is the usual choice on a server; complete memory dump captures everything and is much larger.
- Restart after changing it.
- Force a test crash by the route you intend to use in anger, and confirm the file appears.
The paging file cannot hold the dump
You have this one if The configuration looks right, the crash happens, and no dump is written – or a truncated one is.
- Confirm the paging file is on the partition where Windows is installed. The default dump location is the pagefile, so a system with no pagefile there has nowhere to write.
- Size the paging file for the dump type you chose rather than leaving it at whatever a tuning guide set.
- Confirm there is free space for the dump file itself at
%SystemRoot%\Memory.dmp, or wherever DebugFilePath points. - On a machine with a lot of memory, consider a kernel dump rather than a complete dump – it is smaller and usually sufficient.
The keyboard route was never enabled, or was enabled on the wrong driver
You have this one if Ctrl and Scroll Lock do nothing on a machine that is otherwise responsive.
- Set
CrashOnCtrlScrollto REG_DWORD 1 under the Parameters key for the keyboard driver actually in use: i8042prt, kbdhid or hyperkbd. - On a laptop that has a PS/2 internal keyboard and USB external ones, set both.
- Restart. The setting is read when the keyboard driver loads.
- Hold the rightmost Ctrl key and press Scroll Lock twice – the rightmost Ctrl specifically.
Event ID 46 on a healthy machine
You have this one if volmgr logs ‘Crash dump initialization failed!’ at every boot, or at the first boot after an installation.
- Read the cause before acting: the computer booted without a configured dump file, and the default dump file is the pagefile.
- On the first boot of a clean installation, or where no dump is wanted, Microsoft says the event can safely be ignored.
- If you do want dumps, complete the paging file configuration and the event stops.
- Do not rebuild the pagefile or reinstall on the strength of this event alone.
Full reference
The deliberate-crash codes
| Code | What it means | Parameters |
|---|---|---|
0x000000E2 |
The user deliberately initiated a crash dump from the kernel debugger or the keyboard | None |
0xDEADDEAD |
MANUALLY_INITIATED_CRASH1 – the same deliberate crash | All four reserved |
0x000001C8 |
The system was configured to bug check when the power button is held for a set time | Parameter 1 is the hold time in milliseconds |
Enabling the keyboard crash
| Keyboard | Registry path | Value |
|---|---|---|
| PS/2 | HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parameters |
CrashOnCtrlScroll, REG_DWORD, 1 |
| USB or HID | HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\kbdhid\Parameters |
CrashOnCtrlScroll, REG_DWORD, 1 |
| Hyper-V | HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\hyperkbd\Parameters |
CrashOnCtrlScroll, REG_DWORD, 1 |
Restart after setting the value, then hold the rightmost Ctrl key and press Scroll Lock twice. On a laptop with both a PS/2 internal keyboard and USB external keyboards, Microsoft’s advice is to create both keys so either will work.
Dump configuration, read and set
| What to check | Where |
|---|---|
| Dump type | DebugInfoType from Win32_OSRecoveryConfiguration: 0 none, 1 complete, 2 kernel, 3 small |
| Dump file path | DebugFilePath, default %SystemRoot%\Memory.dmp |
| Whether it overwrites | OverwriteExistingDebugFile |
| Automatic restart | AutoReboot |
| Where to change them | Control Panel, System and Security, System, Advanced system settings, Advanced, Startup and Recovery, Settings |
NMICrashDump under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl is not required on Windows 8 and later clients or Windows Server 2012 and later, and setting it on those versions has no effect. The NMI switch still has to be enabled in the BIOS or the management controller.
The codes that turn up next to these
0x000000E4 is not a deliberate crash and should not be filed with them. Its published meaning is that memory which should not contain an executive work item does contain one, or that a currently active work item was queued – usually because a driver freed memory that still held a work item. Parameter 1 distinguishes the cases: 0x0 an active work item freed, 0x1 an active work item queued, 0x2 a queued I/O work item freed, 0x3 an I/O work item initialised with an invalid object, and others for invalid queue types and worker routine addresses.
0x0000004C, FATAL_UNHANDLED_HARD_ERROR, publishes nothing. The page gives the symbolic name and a statement that the bug check appears very infrequently, and stops. There is no description, no parameter table and no cause, so any confident explanation of it is invented.
Getting a usable dump out of a machine that has hung
- Decide the route in advance and test it while the machine is healthy. A hung server is a bad time to discover the registry value was never set.
- Confirm the dump type and the pagefile before you need them, not after.
- For remote servers, the NMI switch in the management controller is the route that works when nothing else responds – check the controller documentation for where it lives.
- For a machine that people hold the power button on, the power-button-hold bug check turns a hard reset into a captured dump. Parameter 1 tells you how long they held it.
- After any forced crash, confirm the dump file exists and opens in the debugger before you let the machine back into service.
Every code this article covers
| Code | What it points at | Source |
|---|---|---|
0x000000E2 |
MANUALLY_INITIATED_CRASH: the user deliberately initiated a crash dump from either the kernel debugger or the keyboard. No parameters | Microsoft Learn |
0x0000004C |
FATAL_UNHANDLED_HARD_ERROR: Microsoft publishes the symbolic name and the statement that this bug check appears very infrequently. No description, parameters or cause is given | not published by the vendor |
0x000000E4 |
WORKER_INVALID: memory that should not contain an executive work item does contain one, or a currently active work item was queued – usually caused by a driver freeing memory that still contains an executive work item. Parameter 1 distinguishes the cases | Microsoft Learn |
0x000001C8 |
MANUALLY_INITIATED_POWER_BUTTON_HOLD: the system was configured to bug check when the power button is held for a set time, so a dump is captured instead of a hard reset. Parameter 1 is the hold time in milliseconds, and the user sees a black screen asking them to release the power button | Microsoft Learn |
0xDEADDEAD |
MANUALLY_INITIATED_CRASH1: the user deliberately initiated a crash dump from the kernel debugger or the keyboard. All four parameters are reserved | Microsoft Learn |
Event ID 46 |
Logged by volmgr in the System log as ‘Crash dump initialization failed!’. The documented cause is that the computer booted without a configured dump file, because the default dump file is the pagefile; Microsoft says it can be safely ignored on a clean installation’s first boot or where no dump is wanted | Microsoft Learn |
Confirm the fix worked
Get-CimInstance Win32_OSRecoveryConfigurationshows the DebugInfoType you intended, not 0.- A deliberate test crash produces a dump file at DebugFilePath.
- The dump opens in the debugger and
!analyze -vproduces a stack. - Event ID 46 no longer appears at boot, if you completed the paging file configuration.
- The keyboard or NMI route you plan to rely on has been tested once on a machine you can afford to crash.
Questions people ask about this
Is 0x000000E2 a fault?
No. It means somebody asked for the crash – from a kernel debugger or from the keyboard. If nobody in your team did, ask whoever has management controller access, because a forced NMI produces a deliberate crash too.
Event ID 46 appears at every boot. Is my dump configuration broken?
Not necessarily. Microsoft documents the cause as booting without a configured dump file, and says the event can safely be ignored on a clean installation’s first boot or where no dump is wanted. Complete the paging file configuration if you do want dumps.
Do I still need NMICrashDump?
No, on any current system. Microsoft states it is not required on Windows 8 and later clients or Windows Server 2012 and later, and that setting it there has no effect. The NMI switch itself still has to be enabled in the BIOS or management controller.
Why did Ctrl and Scroll Lock do nothing?
Either the registry value was never set, or it was set under the wrong keyboard driver. The value is CrashOnCtrlScroll under the Parameters key of i8042prt, kbdhid or hyperkbd, and it needs a restart. Hold the rightmost Ctrl, not the left one.
What is 0x0000004C?
Nothing that Microsoft publishes. The page gives the symbolic name FATAL_UNHANDLED_HARD_ERROR and a note that it appears very infrequently. Work from the dump rather than from the number.
