Что означает код возврата ядра macOS 11 (KERN_ALREADY_IN_SET)?

 
Также может означать:
КонстантаТипОС
ERROR_BAD_FORMATОшибка WindowsWindows
ippStsResFloorСтатус Intel IPPЛюбая
EAGAINerrnoLinux
EDEADLKerrnomacOS
EAGAINerrnoSolaris
EAGAINerrnoWindows
NO_EXCEPTION_HANDLING_SUPPORTКод BSODWindows
Предыдущий Следующий
KERN_MEMORY_ERROR KERN_NOT_IN_SET

KERN_ALREADY_IN_SET

KERN_ALREADY_IN_SET возвращается, когда код пытается добавить право приёма в набор портов, который уже содержит его. Набор портов Mach позволяет получателю ожидать активность от нескольких портов-членов как от одного объекта; это не список с дубликатами, в который имеет смысл повторно добавлять то же право приёма.

Обычно это проблема жизненного цикла или учёта состояния. Инициализация могла выполниться дважды, два компонента могли заявить владение одним правом приёма либо очистка не сбросила локальное состояние перед повторной инициализацией. Сам порт может оставаться действительным; конфликт относится к запрошенному переходу членства.

Как обрабатывать

  • Делайте регистрацию в наборе идемпотентной только тогда, когда существующее членство ожидается и проверено.
  • Отслеживайте право приёма и его связь с набором портов совместно, а не только числовое имя порта.
  • Проверьте параллельные пути инициализации и переподключения на повторную регистрацию.
  • Не создавайте другое право приёма для той же службы, если это явно не требуется архитектурой.

Наборы портов Mach относятся к стороне приёма. Значимо именно право приёма, поэтому вызывающая сторона, имеющая только права отправки, не устранит проблему повторным добавлением порта.

Ссылки


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