Что означает код errno 98 (ENOSR)?

 
Также может означать:
КонстантаТипОС
EADDRINUSEerrnoLinux
EPROTOTYPEerrnoSolaris
OBJECT1_INITIALIZATION_FAILEDКод BSODWindows
Предыдущий Следующий
EADDRINUSE EPROTOTYPE

ENOSR

На этой странице рассматривается состояние Ресурсы STREAMS Darwin исчерпаны. Уровень совместимости STREAMS не смог выделить требуемую очередь, блок сообщения или связанный ресурс.

Что в действительности сообщает формулировка

Обработка системных вызовов Darwin BSD: исчерпание ресурсов STREAMS Darwin относится к Darwin errno и должно декодироваться по точному заголовку SDK или XNU, использованному целевой системой. Расширения Darwin и устаревшие имена STREAMS, связанные с исчерпанием ресурсов, могут отличаться наличием или нумерацией в других UNIX-подобных системах. В рамках Обработки системных вызовов Darwin BSD формулировка, связанная с ENOSR, указывает на исходный интерфейс, но не доказывает, что код вернула современная подсистема с похожим названием.

Darwin назначает нескольким символам errno вне POSIX собственные значения и номера при диагностике исчерпания ресурсов STREAMS. При исследовании исчерпания ресурсов STREAMS Darwin не декодируйте число по таблице Linux и не считайте, что тот же символ возвращается тем же API в другой ОС.

Данные до повторной попытки

СведенияНа какой вопрос отвечают
Количество потоков и модулей, давление на выделение сообщений, процесс, журналы ядра и операция.Связывают исчерпание ресурсов STREAMS Darwin с одним действующим объектом API, а не только с переведённым сообщением.
Значение Darwin errno и версия заголовка SDK/XNU, по которому оно декодировано при диагностике исчерпания ресурсов STREAMS.Показывают, возникла ли ошибка в ABI вызывающей стороны, оболочке или поставщике при диагностике исчерпания ресурсов STREAMS.
Результат первого системного вызова или ioctl, а также процесс, поток и поколение объекта при диагностике исчерпания ресурсов STREAMS.Сохраняют первую границу до того, как errno может быть перезаписан при диагностике исчерпания ресурсов STREAMS.
Заведомо исправный объект того же класса в той же сборке macOS при диагностике исчерпания ресурсов STREAMS.Даёт контрольное сравнение на той же платформе.

Сохраните errno сразу после отказавшего вызова, вернувшего состояние Ресурсы STREAMS Darwin исчерпаны, до выполнения форматирования, трассировки, выделения памяти или очистки. Для Ресурсы STREAMS Darwin исчерпаны также сохраните возвращаемое значение функции, поскольку многие интерфейсы C сообщают об ошибке через него, а errno используют лишь как дополнительную информацию.

Граничные тесты

  1. Закройте контролируемые потоки и до повтора убедитесь, что ресурсы возвращаются. Запишите, достигает ли контроль той же границы системного вызова или среды выполнения, что и исходная ошибка.
  2. Немедленно сохраните errno и сравните связанное возвращаемое значение при диагностике исчерпания ресурсов STREAMS. Изменившийся errno после теста означает новую границу, а не другую формулировку исчерпания ресурсов.
  3. Повторите тест с одним контролируемым объектом, сохранив идентификатор и песочницу без изменений при диагностике исчерпания ресурсов STREAMS. После контроля повторите исходную операцию, чтобы результат оставался относящимся к исчерпанию ресурсов STREAMS Darwin.

Особенно показательны количество потоков и модулей, давление на выделение сообщений, процесс, журналы ядра и операция. В качестве контроля закройте управляемые потоки и убедитесь, что ресурсы вернулись. Для состояния Ресурсы STREAMS Darwin исчерпаны эти данные позволяют отличить устаревший идентификатор или неподдерживаемый запрос от общего отказа поставщика без масштабных изменений узла.

Не переводите код без проверки контекста

Соблазнительное предположениеБолее безопасная интерпретация
Английская фраза считается переносимой между платформамиИсчерпание ресурсов STREAMS Darwin относится к обработке системных вызовов Darwin BSD; до применения таблицы errno другой платформы проверьте заголовки целевой системы и API, вернувший код
Повтор завершился успешно и стёр исходные данныеПовтор может заменить ошибку другим состоянием; заранее сохраните первый вызов, числовое значение и поколение объекта

Если оболочка преобразует состояние Ресурсы STREAMS Darwin исчерпаны в исключение или логическое значение, добавьте инструментирование ниже этой оболочки. Для Ресурсы STREAMS Darwin исчерпаны решающее значение имеет системный вызов, ioctl, функция CRT или точка входа совместимости, впервые предоставившая код.

Доказательство исправления

Целевое исправление. Устраните утечки потоков или давление сообщений и уменьшите параллелизм; не перезагружайте систему до сохранения диагностических данных.

Доказательство отсутствия регрессии. Использование ресурсов возвращается к базовому уровню, а репрезентативная нагрузка больше не исчерпывает пул совместимости. Проверьте один поддерживаемый граничный случай и один намеренно отрицательный случай, чтобы обработка состояния Ресурсы STREAMS Darwin исчерпаны оставалась явной.

Технические ссылки

Эти источники владельцев и стандартов определяют пространство имён и контракт подсистемы, необходимые для проверки Обработки системных вызовов Darwin BSD ENOSR в установленной версии платформы.

  • Apple XNU: errno.h — определяет используемое пространство статусов при диагностике исчерпания ресурсов STREAMS.
  • Apple: ошибки системных вызовов intro(2) — описывает границу API или жизненного цикла при диагностике исчерпания ресурсов STREAMS.
  • Apple OSS: исходный код XNU — предоставляет контекст ABI, реализации или протокола при диагностике исчерпания ресурсов STREAMS.
  • The Open Group: errno.h — определяет ограничения переносимости и проверки при диагностике исчерпания ресурсов STREAMS.

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