| Предыдущий | Следующий |
| EISCONN | ENOTCONN |
EOWNERDEAD
Что означает EOWNERDEAD в Windows UCRT
EOWNERDEAD означает «Процесс завершился, не освободив блокировку». Для условия «Процесс завершился, не освободив блокировку» код EOWNERDEAD нужно связывать с первым возвратившим его вызовом и контекстом: процесс, поток, сигнал, ожидание или объект синхронизации.
Для условия «Процесс завершился, не освободив блокировку» сначала установите канал ошибки: UCRT использует errno, Win32 API — GetLastError(), а Winsock — WSAGetLastError(); эти значения не взаимозаменяемы. Для EOWNERDEAD исходная английская страница также выделяет ENOTRECOVERABLE и UCRT; эти данные полезно записать вместе с return value, потоком и временем события.
Диагностика
- При ошибке «Процесс завершился, не освободив блокировку» (Windows UCRT,
EOWNERDEAD) сохраните PID/TID, сигнал или объект ожидания и момент, когда состояние изменилось. - При ошибке «Процесс завершился, не освободив блокировку» (Windows UCRT,
EOWNERDEAD) проверьте гонку между завершением, отменой, ожиданием и повторным использованием идентификатора. - При ошибке «Процесс завершился, не освободив блокировку» (Windows UCRT,
EOWNERDEAD) отделите документированное прерывание от ошибки логики, сохранив errno до обработчика и cleanup. - При ошибке «Процесс завершился, не освободив блокировку» (Windows UCRT,
EOWNERDEAD) воспроизведите порядок событий в контролируемом тесте вместо бесконечного retry.
На платформе Windows UCRT исправление EOWNERDEAD считается подтверждённым, когда исходная операция даёт ожидаемый результат, а отдельный отрицательный тест по-прежнему воспроизводит именно условие «Процесс завершился, не освободив блокировку» без утечки ресурсов и потери первичной диагностики.
Ссылки для EOWNERDEAD
Нужно найти другой код? Найти другой код состояния или ошибки.