| Предыдущий | Следующий |
| ECONNRESET | EBADMSG |
ENOTRECOVERABLE
Что означает результат
ENOTRECOVERABLE: ENOTRECOVERABLE является частью семантики восстановления устойчивого мьютекса. Оно означает, что предыдущий владелец завершился или оставил защищённое состояние, а восстановление не было завершено так, чтобы сделать состояние безопасным для дальнейшего использования. Мьютекс не просто занят: обычное получение блокировки больше невозможно.. Для robust mutex состояние признано невосстановимым: предыдущий владелец умер, а защищённые данные не были приведены в согласованное состояние до разблокировки. Это не просто «mutex занят».
Что проверить
- Проверьте, был ли ранее получен EOWNERDEAD и выполнил ли новый владелец восстановление данных.
- Убедитесь, что pthread_mutex_consistent вызван только после фактического восстановления invariant.
- Найдите путь, который разблокировал robust mutex без завершённого recovery.
Диагностика и исправление
После ENOTRECOVERABLE обычное повторное lock не восстанавливает объект. Нужно пересоздать защищённое состояние/синхронизацию в границе, предусмотренной приложением.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.