What does HRESULT 0x801B8003 (WER_E_NOT_INITIALIZED) mean?

 
Previous Next
WER_E_NETWORK_FAILURE WER_E_ALREADY_REPORTING

WER_E_NOT_INITIALIZED

WER_E_NOT_INITIALIZED is the failure HRESULT 0x801B8003 (signed decimal -2145681405, unsigned decimal 2149285891). Its severity bit is 1, facility is 27 (FACILITY_WER), and the facility-specific code field is 0x8003.

AllStat records the Windows SDK message as “Report not initialized.”

State-machine interpretation

WER_E_NOT_INITIALIZED indicates that the reporting operation does not have the initialized WER state it requires. Public documentation does not assign this HRESULT to one exclusive API call, so diagnosis must start with the exact function that returned it and the report-handle lifecycle rather than guessing that the Windows Error Reporting service is disabled.

Expected generic-report sequence

  • create a report with WerReportCreate and retain the returned HREPORT;
  • set parameters that identify the event;
  • add files or a dump only after creation succeeded;
  • submit the same live handle with WerReportSubmit;
  • close it exactly once with WerReportCloseHandle after reporting is finished.

Common lifecycle mistakes to investigate

  • continuing after WerReportCreate failed or returned no usable handle;
  • using a report object from a partially initialized wrapper instance;
  • submitting from a different asynchronous path before setup completed;
  • reusing state after the report handle was closed or after cleanup ran;
  • racing initialization and submission between threads.

Minimal reproduction

Build a single-threaded test that creates one report, sets one stable parameter, submits it, records WER_SUBMIT_RESULT, and closes the handle. If that succeeds, reintroduce asynchronous dispatch, attachments, and wrapper-object reuse one feature at a time. This isolates an application lifecycle defect from machine-wide WER policy.

Data to log

  • the API name, thread ID, object instance, and monotonic sequence number;
  • whether report creation returned S_OK and a non-null handle;
  • all transitions such as created, populated, submitted, and closed;
  • the first failing HRESULT instead of only the final wrapper error;
  • whether another thread performed cleanup or cancellation.

Retry guidance

Do not retry the same uninitialized object. Reconstruct a fresh report only after the caller has identified why initialization did not complete. Blind retries can repeatedly exercise a race and may attach diagnostic data to the wrong incident.

How it differs from service and concurrency errors

WER_E_ALREADY_REPORTING means an initialized reporting flow already exists for the process. WER_E_NOT_INITIALIZED is the opposite class of lifecycle failure: required report state is absent. A disabled policy or unavailable network has separate diagnostics and should not be inferred from this code.

Official Microsoft references


Looking for a different code? Search another status or error code.