| Предыдущий | Следующий |
| ENETUNREACH | ENOBUFS |
ENAVAIL
Что означает ENAVAIL в Linux
ENAVAIL: Нет доступных семафоров XENIX. Это исторический XENIX semaphore status о недоступности объекта; проверяйте legacy IPC subsystem и конфигурацию, где такой errno ещё может возникнуть.
В Linux сохраните errno сразу после первого неуспешного системного вызова: последующий library или cleanup вызов может заменить его и разрушить причинную связь. Полезные технические маркеры из контекста этой ошибки: ENAVAIL, errno, STREAMS, IPC, ABI. Записывайте их фактические значения или режимы, а не только символическое имя errno.
Диагностика
- Если приложение не использует такую подсистему напрямую, найдите слой-адаптер, который преобразовал исходную ошибку в этот errno.
- Проверьте документацию именно активной реализации: одинаковое символическое имя в старых UNIX-подсистемах могло иметь узкую область применения.
- Сначала подтвердите реальный subsystem или compatibility layer, который вернул этот исторический errno; современный код может лишь транслировать его без исходного контекста.
- Для Linux сопоставьте событие с process/thread, descriptor и точным syscall; после retry проверьте, не изменился ли объект под тем же числовым дескриптором.
Практическая проверка
Для ENAVAIL зафиксируйте конкретный XENIX semaphore set и операцию, которая запросила недоступный объект. Проверьте, существует ли эта IPC implementation в активной системе и не является ли errno только результатом старой таблицы совместимости. На современном окружении отсутствие реального XENIX subsystem — важный сигнал искать ошибочное отображение кода в библиотеке или эмуляторе.
Ссылки
- Linux man-pages: errno(3)
- Linux kernel: asm-generic errno definitions
- GNU C Library: error codes
- illumos: STREAMS programming documentation
Нужно найти другой код? Найти другой код состояния или ошибки.