| Previous | Next |
| ENOTRECOVERABLE | EQFULL |
EOWNERDEAD
The caller may hold the lock, but not yet trustworthy state
EOWNERDEAD is unusual because the caller can acquire a robust mutex and still receive a nonzero result. The prior owner terminated while holding the lock, so the new owner must treat the protected data as potentially inconsistent and decide whether it can be repaired.
Do not immediately resume normal work. First validate or reconstruct the data protected by the mutex; only after successful repair should the implementation mark the state consistent through the robust-mutex recovery mechanism. Unlocking without completing recovery can turn the mutex into the permanently unusable ENOTRECOVERABLE state.
What recovery must establish
- Which mutations were in progress when the previous owner stopped and whether an on-disk or in-memory journal can be replayed.
- That all invariants of the shared structure, not just the lock word, are restored before other threads proceed.
- That crash and cancellation paths leave enough evidence to distinguish an owner failure from a normal unlock.
References
- Apple XNU: Darwin errno definitions
- POSIX: pthread_mutex_lock() robust-mutex behavior
- POSIX: pthread_mutex_consistent()
Looking for a different code? Search another status or error code.