Что означает код errno 45 (EDEADLK) в Solaris?

 
Также может означать:
КонстантаТипОС
KERN_RPC_CONTINUE_ORPHANКод возврата ядра macOSmacOS
ippStsLLADisabledСтатус Intel IPPЛюбая
EL2NSYNCerrnoLinux
ENOTSUPerrnomacOS
SCSI_DISK_DRIVER_INTERNALКод BSODWindows
Предыдущий Следующий
ENOTSUP EL3HLT

EDEADLK

Обнаружение взаимоблокировок в блокировках и синхронизации

В Solaris EDEADLK имеет значение errno 45. Основное сообщение: Состояние взаимоблокировки., однако полезный диагностический контекст уже краткого сообщения: Solaris обнаружила взаимоблокировку или предотвратила её при блокировке либо синхронизации.

Для блокировок файлов сохраните диапазоны, режимы read/write и владельцев конфликтующих блокировок; для mutex — порядок захвата объектов. Исправление требует разорвать цикл ожиданий, а не увеличивать число повторных попыток.

Что проверить

  • Зафиксируйте тип блокировки: блокировка записи fcntl, мьютекс, семафор, условная переменная или блокировка чтения/записи.
  • Проверьте порядок захвата и владельцев блокировок, а не увеличивайте значения тайм-аутов.
  • Сравните с EDEADLOCK — более старым вариантом имени, использовавшимся в Solaris для сообщений о взаимоблокировке файловых блокировок.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.