Site icon EfmSoft

What does Windows error code 105 (ERROR_SEM_OWNER_DIED) mean?

 
Could be also:
ConstantTypeOS
ENOBUFSerrnoLinux
EOWNERDEADerrnoMac
ECANCELEDerrnoWindows
IO1_INITIALIZATION_FAILEDBugCheck CodeWindows
Previous Next
ERROR_INVALID_AT_INTERRUPT_TIME ERROR_SEM_USER_LIMIT

ERROR_SEM_OWNER_DIED

What ERROR_SEM_OWNER_DIED means

The previous owner of an exclusive semaphore terminated or otherwise ended ownership without completing normal release. The result signals abandoned synchronization state. Another participant may acquire the object, but data protected by it can be inconsistent because the former owner stopped in the middle of an update.

Common causes

How to investigate

  1. Find the crash, termination, or watchdog event for the former owner
  2. Determine which data structures were protected at the time
  3. Run integrity checks before allowing normal processing to resume
  4. Capture the new owner path to ensure it recognizes abandoned state

Developer guidance

Handle abandonment explicitly. Recovery code should validate or roll back protected state before treating the acquisition as ordinary success. Avoid forcefully terminating threads that may own synchronization primitives.

Administrator and support guidance

Do not assume that restarting only the consumer is sufficient. Check persistent files, shared memory, and transactional state modified by the dead owner.

How this code differs from related results

Unlike ERROR_EXCL_SEM_ALREADY_OWNED, the earlier owner is no longer healthy. The key issue is possible state corruption, not merely contention.

Evidence worth collecting

For ERROR_SEM_OWNER_DIED, begin the trace at the operation where the owning process crashed while holding the semaphore. Preserve the exact API boundary, numeric result, process and thread identifiers, relevant object state, and the component version. The first verification point should be to find the crash, termination, or watchdog event for the former owner. This evidence distinguishes the specific this result contract from a later secondary failure.

Recovery and verification

Recovery for it should address the observed condition rather than merely retrying the same call. After the change, reproduce the scenario in which the owning process crashed while holding the semaphore, then confirm that the intended operation completes and that cleanup returns all associated resources. Also verify that the next repeated operation follows the same successful path without increasing the resource class implicated by this result.

When to escalate

Escalate this result with a minimal reproduction focused on the failing synchronization boundary. Include the operating-system build, binary architecture, runtime or compatibility-layer version, the exact input values, and a timestamped trace showing the owning process crashed while holding the semaphore. For the result escalation record, note whether changing concurrency, object lifetime, target process, module set, or endpoint location alters the result.

References


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

Exit mobile version