Site icon EfmSoft

Что означает код errno 59 (ETOOMANYREFS)?

 
Также может означать:
КонстантаТипОС
ERROR_UNEXP_NET_ERRОшибка WindowsWindows
EBFONTerrnoLinux
ENOTRECOVERABLEerrnoSolaris
SYSTEM_SERVICE_EXCEPTIONКод BSODWindows
Предыдущий Следующий
EBFONT ENOTRECOVERABLE

ETOOMANYREFS

На этой странице рассматривается состояние Слишком много ссылок для операции сокета Darwin в стиле splice. Сетевой путь не смог создать ещё одну ссылку, требуемую операцией.

Значение на этой платформе

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

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

Данные, определяющие владельца ошибки

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

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

Последовательность проверки

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

Предостережение о переносимости

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

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

Узкое исправление

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

Доказательство отсутствия регрессии. Количество ссылок уменьшается после закрытия, а операция остаётся стабильной при ожидаемом параллелизме. Проверьте один поддерживаемый граничный случай и один намеренно отрицательный случай, чтобы обработка состояния Слишком много ссылок для операции сокета Darwin в стиле splice оставалась явной.

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

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


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

Exit mobile version