Что означает код errno 35 (EDEADLK)?

 
Также может означать:
КонстантаТипОС
KERN_INVALID_SECURITYКод возврата ядра macOSmacOS
ippStsDoubleSizeСтатус Intel IPPЛюбая
EAGAINerrnomacOS
ENOMSGerrnoSolaris
FAT_FILE_SYSTEMКод BSODWindows
Предыдущий Следующий
ERANGE EAGAIN

EDEADLK

Что означает EDEADLK в Linux

EDEADLK означает «Операция привела бы к взаимной блокировке ресурсов». Для условия «Операция привела бы к взаимной блокировке ресурсов» код EDEADLK нужно связывать с первым возвратившим его вызовом и контекстом: процесс, поток, сигнал, ожидание или объект синхронизации.

После отказа, соответствующего «Операция привела бы к взаимной блокировке ресурсов», сохраните errno немедленно: любой последующий системный или библиотечный вызов может заменить значение. Для EDEADLK исходная английская страница также выделяет RPC, IPC и pthread_mutex_lock; эти данные полезно записать вместе с return value, потоком и временем события.

Диагностика

  • При ошибке «Операция привела бы к взаимной блокировке ресурсов» (Linux, EDEADLK) сохраните PID/TID, сигнал или объект ожидания и момент, когда состояние изменилось.
  • При ошибке «Операция привела бы к взаимной блокировке ресурсов» (Linux, EDEADLK) проверьте гонку между завершением, отменой, ожиданием и повторным использованием идентификатора.
  • При ошибке «Операция привела бы к взаимной блокировке ресурсов» (Linux, EDEADLK) отделите документированное прерывание от ошибки логики, сохранив errno до обработчика и cleanup.
  • При ошибке «Операция привела бы к взаимной блокировке ресурсов» (Linux, EDEADLK) воспроизведите порядок событий в контролируемом тесте вместо бесконечного retry.

На платформе Linux исправление EDEADLK считается подтверждённым, когда исходная операция даёт ожидаемый результат, а отдельный отрицательный тест по-прежнему воспроизводит именно условие «Операция привела бы к взаимной блокировке ресурсов» без утечки ресурсов и потери первичной диагностики.

Ссылки для EDEADLK


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