| Previous | Next |
| ERROR_WAS_LOCKED | ERROR_ALREADY_WIN32 |
ERROR_LOG_HARD_ERROR
Windows generated an application hard-error popup record
ERROR_LOG_HARD_ERROR corresponds to Win32 error value documented as: Application popup: %1: %2 A component requested a hard-error notification whose useful content is carried by inserted strings. Historically this could produce an interactive system dialog; modern services may instead leave an event or diagnostic record.
Where the result appears in real systems
- Legacy native applications calling hard-error mechanisms.
- Subsystem failures propagated to an application popup.
- Compatibility code retaining old NT behavior.
Evidence to collect before changing the system
collect all message insertions, process identity, session number, desktop, and event-log record; determine whether the process was interactive or running in session 0; inspect a dump if the hard error follows memory corruption or loader failure
Keep the original numeric value, symbolic name, API return path, thread and process identity, and the exact timestamp in one diagnostic record. Those fields prevent later layers from replacing this specific result with a generic failure and make correlation with ETW or Event Viewer practical.
Handling and recovery
Fix the originating failure and remove dependence on interactive hard-error dialogs. Services should report structured errors to their controller and event log because nobody may be able to respond to a popup.
Code that receives this result should classify it according to the operation that produced it: completion information, a recoverable environmental condition, or a programming defect. The result classification should be made at the API boundary where the caller still knows the handle, object, flags, and expected state.
What not to infer from this code
This result describes the reporting mechanism, not the underlying cause. The application name and inserted message text contain the actual incident details.
Implementation guidance
Preserve this result through logging and telemetry instead of immediately converting it to free-form text. When it crosses an HRESULT boundary, record both the original Win32 value and the converted HRESULT; when it crosses RPC, JSON, or another protocol, include an explicit error-domain field so the receiver does not convert it twice.
A useful automated test for this Win32 error should reproduce the relevant state transition, assert the exact returned value, and verify cleanup after both the normal and exceptional path. The test for this Win32 error should also check that a retry is performed only when the underlying state can genuinely change, because unconditional retries often hide ownership, architecture, power, or resource-negotiation defects.
References
Looking for a different code? Search another status or error code.