Issue
Windows repeatedly stops during startup with CRITICAL_PROCESS_DIED, and crash-dump plus service/package evidence identifies one exact OEM service, recovery agent, support utility, or its associated component as the cause. This is the narrow, evidence-based branch of the generic 0xEF procedure. The repair is to preserve the evidence, map the implicated process or module to its signed package and service, then update, uninstall, or temporarily disable only that component.
CRITICAL_PROCESS_DIED does not name the responsible product by itself. A dump can show the critical process that terminated, the process or thread context, and relevant modules, but ntoskrnl.exe, a vendor module on a stack, or one Service Control Manager event alone is not sufficient proof. Microsoft recommends comparing multiple dumps for consistent characteristics.
Searchable Windows error codes and exact messages
| Displayed identifier | Windows name or recorded/typical text | When it can apply |
|---|---|---|
0x000000EF | CRITICAL_PROCESS_DIED | Primary and defining bug check: a process that Windows treats as critical terminated or became corrupted. |
0xEF | CRITICAL_PROCESS_DIED | Short form of the same bug-check value. |
Bug-check parameter 2 = 0 | A critical process terminated | In WinDbg, parameter 1 identifies the process object for this case. |
Bug-check parameter 2 = 1 | A critical thread terminated | In WinDbg, parameter 1 identifies the thread object; inspect its owning process rather than using the address as a process object. |
0x000000F4 | CRITICAL_OBJECT_TERMINATION | A related but different critical-process/thread termination bug check. Do not relabel it 0xEF. |
Bug check 0xc000021a | WINLOGON_FATAL_ERROR | Winlogon or CSRSS termination through a different stop path. STATUS_SYSTEM_PROCESS_TERMINATED is the NTSTATUS name for the same numeric value. Use the 0xc000021a procedure when this is the displayed code. |
0xc0000005 | STATUS_ACCESS_VIOLATION | Use only when the dump shows this exception in the terminated process or implicated module. |
0xc0000006 | STATUS_IN_PAGE_ERROR | Required data could not be placed into memory because of an underlying I/O status. It requires I/O investigation but does not by itself prove a failing disk. |
Event ID 1001, source WER-SystemErrorReporting | Message begins The computer has rebooted from a bugcheck. | The Windows System log can record the bug-check value, parameters, dump path, and report identifier after recovery. |
Event IDs 7000, 7001, 7023 | Typical Service Control Manager text: service failed to start, a dependency failed, or a service terminated with an error | Supporting evidence only when the event names the same proven OEM service at the crash time. These are summaries, not immutable full message templates. |
Event IDs 7031, 7034 | Typical Service Control Manager text: a service terminated unexpectedly | Useful timing evidence. A configured service recovery action that simply restarts the computer is not automatically a 0xEF bug check. |
Search CRITICAL_PROCESS_DIED 0xEF together with the exact OEM product, service short name, executable or module path, file version, and computer model. Do not search only the blue-screen label and accept a generic service-disable list.
Applies when
Use this procedure only when Windows repeatedly displays 0xEF and the OEM component is demonstrated by at least two independent links, such as:
- multiple dumps identify the same OEM process, module, or failure context;
- the binary path, signature, and version map to one installed OEM package and service;
- Safe Mode starts while normal startup crashes when that component loads;
- an OEM advisory identifies the exact product/version; or
- disabling, removing, or updating only that component stops the reproducible crash.
The last result is the strongest confirmation, but it should be attempted only after the service identity and a rollback path are preserved.
Does not apply when
Do not use this article for an undiagnosed CRITICAL_PROCESS_DIED loop, a dump that shows only ntoskrnl.exe, an arbitrary OEM utility installed on the machine, or a single vendor module merely present on the stack. Do not use it when storage, memory, file-system, in-page, checksum, or servicing evidence is stronger; when the displayed code is 0xc000021a, 0x7A, 0x24, or 0xF4; or when a .sys boot driver/filter is the demonstrated cause. Use the generic 0xEF, boot-driver, storage, memory, or servicing procedure instead.
Do not disable an OEM security, authentication, encryption, firmware-management, thermal, fan, or platform service unless its exact role, ownership, recovery path, and effect on startup have been established.
Information that may remain unknown
The source-code defect inside the OEM component, exact Windows build during the initial evidence-preservation phase, and why Windows marked or lost the critical process may remain unknown. The exact build becomes necessary when choosing a compatible replacement package.
The service short name, executable path, signer/publisher, package name and version, original start type, dump location, and evidence connecting the component to 0xEF may not remain unknown before disablement or removal. A display name alone is insufficient because it can differ from the service short name used by sc.exe and the registry.
Requirements
- Windows Recovery Environment and Startup Settings
- Safe Mode if it remains bootable
- A USB or other destination for crash dumps, event logs, service configuration, and registry-hive backups
- WinDbg on a working Windows computer, with Microsoft symbols available
- Administrator access for service inspection, update, removal, or temporary disablement
- The exact OEM support package or uninstaller for the exact model and Windows version when available
- A restore point, system image, or documented method to restore the component and its original service start type
Do not proceed from a search-result claim alone. Preserve at least one dump, and preferably two or more crashes with matching characteristics, before removing the package.
Starting position
Open Windows Recovery Environment > Troubleshoot > Advanced options > Startup Settings > Restart. First choose Disable automatic restart after failure if the blue screen disappears too quickly, record the complete 0xEF display, then return and try Safe Mode.
If Safe Mode starts, do not run disk cleanup, an OEM cleanup tool, or an automated reset. Copy the dumps and export the evidence before changing the service. If Safe Mode also crashes, use WinRE Command Prompt and detect the offline Windows and USB volumes; never assume Windows is C:.
The purpose of the first pass is attribution, not repair. Do not disable any service until its short name, binary path, signer, version, package owner, original start configuration, and rollback method are recorded.
Confirm the diagnosis
-
Record the blue-screen label and any bug-check parameters in Event Viewer after a successful Safe Mode start. In Event Viewer > Windows Logs > System, locate event
1001fromWER-SystemErrorReportingat the crash time, whose message begins The computer has rebooted from a bugcheck, and export it. -
Preserve available dumps and logs from Safe Mode:
md U:\CriticalProcessEvidence echo %SystemRoot% copy "%SystemRoot%\Minidump\*.dmp" U:\CriticalProcessEvidence copy "%SystemRoot%\MEMORY.DMP" U:\CriticalProcessEvidence wevtutil epl System U:\CriticalProcessEvidence\System.evtx /ow:true wevtutil epl Application U:\CriticalProcessEvidence\Application.evtx /ow:trueReplace
U:with the detected evidence-drive letter. A missing minidump orMEMORY.DMPproduces a copy error; record it rather than claiming the file exists. -
If Safe Mode does not start, detect and map the offline Windows volume from WinRE:
diskpart list volume select volume <Windows-volume-number> detail volume assign letter=W exitUse
assignonly when the verified Windows volume has no letter andlist volumeproves thatW:is unused; recordW:as temporary. If the volume already has a letter, keep it and substitute that letter below. Verify the already identified installation and then copy evidence:dir W:\Windows\System32\Config\SYSTEM md U:\CriticalProcessEvidence copy W:\Windows\Minidump\*.dmp U:\CriticalProcessEvidence copy W:\Windows\MEMORY.DMP U:\CriticalProcessEvidence copy W:\Windows\System32\winevt\Logs\System.evtx U:\CriticalProcessEvidence copy W:\Windows\System32\winevt\Logs\Application.evtx U:\CriticalProcessEvidence -
Open each preserved dump in WinDbg on a working computer. Set Microsoft symbols, reload, and run the standard analysis:
.symfix .reload !analyze -v -
Record the bug-check value, all four parameters,
PROCESS_NAME, exception or termination status when shown, stack, image/module names, and failure bucket. Do not treatProbably caused byas a complete diagnosis without checking the process and module ownership. -
For
0xEFwith parameter 2 equal to0, inspect the process object address from parameter 1:!process <parameter-1-address> 1fFor parameter 2 equal to
1, inspect it as a thread object and then identify the owning process:!thread <parameter-1-address> -
When a specific non-Microsoft module is relevant, inspect its path, timestamp, version, and publisher information:
lmvm <module-name-without-extension> -
Compare at least two dumps when available. Strong evidence repeats the same terminated process, OEM module, service interaction, exception, or failure bucket. If the implicated process/module changes or storage/in-page statuses appear, stop and reclassify.
-
In Safe Mode, map the service short name to its configuration. Replace the placeholder only with the proven service:
sc.exe qc "<service-short-name>" sc.exe queryex "<service-short-name>" sc.exe qfailure "<service-short-name>" sc.exe enumdepend "<service-short-name>" reg query "HKLM\SYSTEM\CurrentControlSet\Services\<service-short-name>" /v DelayedAutoStartSave
TYPE,BINARY_PATH_NAME,START_TYPE,ERROR_CONTROL, account, dependencies, reverse dependents, current state/PID, and recovery actions. Continue only for an optional Win32 OEM service. Stop ifTYPEis a kernel or file-system driver,START_TYPEis boot or system start,ERROR_CONTROLis severe or critical, orenumdependnames an essential service. Ifqfailureshows Restart the Computer, distinguish that configured restart from the actual0xEFevent; the service event and bug-check event must still align. -
Inspect the service registry entry without changing it:
reg query "HKLM\SYSTEM\CurrentControlSet\Services\<service-short-name>" /s -
Extract the actual executable path from
BINARY_PATH_NAME, excluding arguments, then verify its signer and version in an administrator PowerShell window:Get-AuthenticodeSignature -FilePath "<full-executable-path>" | Format-List Status,StatusMessage,SignerCertificate (Get-Item "<full-executable-path>").VersionInfo | Format-List CompanyName,ProductName,FileVersion,ProductVersion,OriginalFilename -
Confirm that the signed binary and version belong to the installed OEM application or recovery package through Windows 11 Settings > Apps > Installed apps, Windows 10 Settings > Apps > Apps & features, or Control Panel > Programs > Programs and Features. Record its exact version and install date. If the path is under
Windows\System32, is Microsoft-signed, is a sharedsvchost.exegroup, or cannot be tied to the OEM package, stop before disabling it. -
Check Reliability Monitor, the Application log, and Service Control Manager events for the same component immediately before each
1001bug-check event. Time correlation supports the dump; it does not replace it. -
Choose the least invasive proven branch:
- an OEM correction for the exact model/package exists: Branch A;
- the package is optional and its supported uninstaller works in Safe Mode: Branch B;
- a reversible service A/B test is required: Branch C;
- neither Safe Mode nor the uninstaller starts, but service attribution is strong: Branch D;
- a restore point predates the component update and attribution is not sufficient for offline editing: Branch E.
Resolution steps
Branch A — Install the OEM's corrected component version
-
Confirm that the OEM package names the exact computer model, Windows 10/11 version and architecture, affected component, and corrected version.
-
Preserve the current installer, version, dump analysis, and service configuration. Create a restore point or image if Safe Mode permits it.
-
If the OEM installer explicitly supports Safe Mode, follow its documented update path. If it requires normal mode, use Branch C to disable only the proven service temporarily, start normal Windows, and then run the OEM installer.
-
Use the OEM-supplied installer or updater. Do not replace its executable or DLL manually and do not install a package for a similar model.
-
After installation, re-query the service and binary version. Restore the service's documented normal start type if the installer did not do so.
-
Restart normally and complete the verification in section 12. If the same
0xEFand evidence return, roll back the package and stop for the OEM; do not cycle through unrelated versions.
Branch B — Uninstall the exact optional OEM package from Safe Mode
-
Confirm from the OEM documentation that the component is optional or that its loss only removes a documented recovery, support, telemetry, or convenience feature.
-
Record any OEM recovery media or alternative Windows recovery method needed while the package is absent.
-
Select the exact recorded package through Windows 11 Settings > Apps > Installed apps, Windows 10 Settings > Apps > Apps & features, or Control Panel > Programs > Programs and Features, and use its supported uninstall option.
-
If the package supplies multiple services or drivers, allow its own uninstaller to remove them. Do not delete its directory, executable, DLL,
.sysfile, or service key manually. -
Restart normally. If Windows starts, preserve the before/after service list and do not reinstall the same affected version.
-
Install only a corrected OEM version validated for the exact model and Windows build, or leave the optional component removed while its recovery/convenience function is documented as unavailable.
Branch C — Temporarily disable one proven OEM service for an A/B test
-
Save the complete output of
sc.exe qc,sc.exe queryex,sc.exe qfailure, andsc.exe enumdepend. The original type, start mode—including delayed automatic state—error control, dependencies, reverse dependents, account, and recovery actions are the rollback record. -
Confirm one final time that the short name maps to the signed OEM binary and not to a Microsoft service, shared host, hardware safety function, authentication component, encryption component, or required storage/network driver. Require an optional Win32 service, no essential reverse dependent, a non-boot/non-system start mode, and non-severe/non-critical error control.
-
Do not stop the service live as a routine test. A live stop can invoke a configured Restart the Computer recovery action or terminate a process Windows treats as critical. Stop it live only if the OEM explicitly documents that exact service as stop-safe and the recorded recovery actions contain no computer restart; otherwise leave the running instance alone and change only its next start.
-
Disable only its next start. The space after
start=is required bysc.exesyntax:sc.exe config "<service-short-name>" start= disabled sc.exe qc "<service-short-name>" -
Confirm that
START_TYPEnow reports disabled, then restart normally. -
If Windows starts without
0xEF, preserve the service-disabled state only long enough to update or uninstall the owning OEM package. The A/B result strongly supports attribution but does not make permanent loss of the OEM function risk-free. -
If the same crash continues, restore the original start type from section 11 and reclassify; do not disable another service without new evidence.
Branch D — Disable the exact service offline only when Safe Mode cannot start
Use this branch only when multiple dumps or an OEM advisory establish the service, its short name and path are verified, a SYSTEM-hive backup has a tested destination, and lack of essential reverse dependents was already established in Safe Mode or exact OEM documentation. If Safe Mode never ran and reverse dependencies cannot be verified, use System Restore or OEM recovery instead of experimenting in the offline registry.
-
From WinRE, detect the Windows and USB volumes as in section 7. Copy the offline SYSTEM hive before loading it:
copy W:\Windows\System32\Config\SYSTEM U:\CriticalProcessEvidence\SYSTEM-before-OEM-service-disable -
Load the offline hive under a temporary name and query both control-set selectors:
reg load HKLM\OfflineSystem W:\Windows\System32\Config\SYSTEM reg query HKLM\OfflineSystem\Select /v Current reg query HKLM\OfflineSystem\Select /v DefaultFrom the moment
reg loadsucceeds, every failure or stop path must unload the hive before leaving Command Prompt or rebooting:reg unload HKLM\OfflineSystem reg query HKLM\OfflineSystemThe unload must report success, and the verification query must report that the key cannot be found. If unload fails, remain in WinRE, close any Registry Editor or process holding the hive, retry the unload, and do not reboot until it is verified absent. This catch-all applies if the selector values differ or any later save, query, path validation, edit, or verification fails.
-
Stop if
CurrentandDefaultdiffer; this bounded procedure will not guess which divergent state should boot. Use theDefaultvalue for the next normal boot:0x1meansControlSet001,0x2meansControlSet002, and so on. Do not assumeControlSet001. -
Before editing, make a second consolidated backup from the loaded hive and require the command to succeed:
reg save HKLM\OfflineSystem U:\CriticalProcessEvidence\SYSTEM-before-OEM-service-disable.hiv /y dir U:\CriticalProcessEvidence\SYSTEM-before-OEM-service-disable.hiv -
Query the exact service in the
Defaultcontrol set and preserve its originalStartandImagePathvalues:reg query "HKLM\OfflineSystem\ControlSet00<n-from-Default>\Services\<service-short-name>" /v Start reg query "HKLM\OfflineSystem\ControlSet00<n-from-Default>\Services\<service-short-name>" /v ImagePath -
Continue only if
ImagePathexactly matches the already verified OEM component and the originalStartvalue is recorded. SetStartto4, which means disabled, then verify the same key:reg add "HKLM\OfflineSystem\ControlSet00<n-from-Default>\Services\<service-short-name>" /v Start /t REG_DWORD /d 4 /f reg query "HKLM\OfflineSystem\ControlSet00<n-from-Default>\Services\<service-short-name>" /v Start -
Unload the hive before restarting:
reg unload HKLM\OfflineSystem reg query HKLM\OfflineSystemRequire the unload to report success and the query to report that the key cannot be found. If unload fails, close Registry Editor and any process holding the hive, then retry. Do not restart while the hive remains loaded.
-
If—and only if—you assigned
W:temporarily in section 7, remove it after the hive unload succeeds. Reidentify the same volume by number and details first; never remove a pre-existing Windows letter:diskpart list volume select volume <same-Windows-volume-number> detail volume remove letter=W detail volume exit -
Start Windows normally. If startup succeeds, immediately preserve event logs, update or uninstall the owning OEM package, and keep the hive backup until verification is complete.
-
If startup still fails with the same evidence, restore the original
Startvalue using section 11 and stop. Do not disable a second service speculatively.
Branch E — Use System Restore when a component update is the proven trigger but offline disablement is not safe
-
In WinRE, select Troubleshoot > Advanced options > System Restore.
-
Choose a restore point created before the exact OEM package update or installation.
-
Review affected applications and drivers. Do not proceed if the restore point would remove unrelated critical changes that cannot be recovered.
-
Complete the restore and test normal startup.
-
If Windows starts, record the restored package version and prevent only the known-bad OEM component version from reinstalling until a corrected package exists.
-
If
0xEFremains, preserve the new dump and compare it with the old ones; do not keep applying restore points without a changed result.
Expected results and branches
- A corrected OEM version stops the crashes: Keep the fixed version and preserve its exact package/model/build compatibility.
- Uninstalling the exact optional package stops the loop: The mechanism is strongly supported; document which OEM recovery/support function is no longer available.
- Disabling one verified service stops
0xEF: Treat it as a successful A/B isolation, then update or remove its owning package rather than leaving an unexplained permanent registry edit. - The service is disabled but the identical crash continues: Restore its start type. The component was not the sole cause, or the actual cause is its driver/filter or another mechanism.
- The dump names a
.sysdriver or filter from the package: Stop this service-only path and use the proven boot-driver/filter procedure; do not delete the file manually. - The dump shows
0xc0000006, disk I/O errors, changing damaged files, or different implicated processes: Storage or memory stability takes priority. - Only a configured service restart occurs and there is no
0xEF/Event1001: This is a service recovery-action problem, notCRITICAL_PROCESS_DIED. - A Microsoft critical process is shown but no OEM module or service interaction is demonstrated: Return to the generic
0xEFprocedure.
Do not do this
- Do not disable random OEM or non-Microsoft services until the crash stops.
- Do not disable
smss.exe,csrss.exe,wininit.exe,services.exe,winlogon.exe,lsass.exe,logonui.exe,conhost.exe, or a Microsoft service because it appears as the terminated process. - Do not treat
ntoskrnl.exe,svchost.exe, orProbably caused byalone as proof of ownership. - Do not use
sc.exe delete, delete a service registry key, or manually remove an executable, DLL, or.sysfile. - Do not edit every
ControlSet00x; use the offlineSelect\Defaultvalue for the next boot, require it to agree withSelect\Currentin this bounded procedure, and preserve the original start value. - Do not restart while the offline SYSTEM hive remains loaded.
- Do not run Driver Verifier in an existing boot loop merely to produce another crash.
- Do not update BIOS, storage firmware, every driver, and the OEM component in one untraceable attempt.
- Do not reinstall the same affected OEM version immediately after its removal fixed startup.
- Do not reset or reinstall Windows before copying dumps, event logs, package versions, and service configuration.
Rollback
For an online service change, use the exact original START_TYPE and DelayedAutoStart state recorded before the test. For an ordinary automatic-start service:
sc.exe config "<service-short-name>" start= auto
Replace auto only with the recorded original type, such as demand; do not guess. If the recorded state was delayed automatic, restore it specifically:
sc.exe config "<service-short-name>" start= delayed-auto
sc.exe qc "<service-short-name>"
reg query "HKLM\SYSTEM\CurrentControlSet\Services\<service-short-name>" /v DelayedAutoStart
Require the final configuration to match the record. A generic start= auto is not an exact restoration of delayed automatic start.
For an offline change, load the same SYSTEM hive, query both Select\Current and Select\Default, require them to agree, use the Default control set, and restore the original numeric Start value recorded before the edit (2 automatic, 3 manual, or the actual prior value). Verify the write, unload the hive successfully, and remove only a drive letter that this procedure assigned temporarily. Do not restore another machine's SYSTEM hive.
Reinstall or repair the component only with the exact compatible OEM package. Use System Restore's undo option when available if a restore introduced a new problem. If uninstalling the recovery component removed an OEM factory-recovery feature, keep verified Windows recovery media available until a fixed OEM package is installed and tested.
Verification
- Windows completes three normal starts and one cold boot without
0xEF. - Event Viewer records no new
BugCheckevent1001for0xEFand no matching unexpected-termination event for the OEM service. - The corrected or removed package version and the service's intended final state are recorded.
- If the service is restored, it starts normally and its OEM function works without a crash.
- If the service remains disabled or the package remains removed, the documented security, thermal, input, update, and recovery functions required on that model still work or have an explicit alternative.
- New dumps do not repeat the same OEM process/module/failure bucket.
- Storage and memory evidence remains clean when the initial dump contained no I/O or corruption indicators.
- The result survives installation of the OEM-approved corrected version, if one is available.
Confidence and stop conditions
Confidence is approximately 85–90% when multiple dumps repeat the same OEM context, the service maps to a signed and versioned package, and disabling, removing, or updating only that component stops the crashes through repeated cold starts. Confidence is approximately 75–80% when two strong evidence links exist but only one usable dump is available. 0xEF plus an OEM utility's mere presence is low-confidence and does not authorize service changes.
Stop when the service short name or binary ownership is uncertain, the path is Microsoft-owned or shared, the OEM component controls authentication, encryption, firmware, storage, thermal safety, or another essential platform function without a supported alternative, dumps disagree, in-page/storage/memory evidence appears, no rollback exists, or the offline hive cannot be backed up and unloaded cleanly. Escalate with the preserved dumps, service configuration, package version, model, and A/B result rather than disabling additional components.