| Предыдущий | Следующий |
| KERN_ALREADY_IN_SET | KERN_NAME_EXISTS |
KERN_NOT_IN_SET
KERN_NOT_IN_SET означает, что операция ожидала принадлежности права приёма определённому набору портов Mach, но такого членства нет. Это состояние является парным для KERN_ALREADY_IN_SET и обычно возникает при удалении, переходе состояния или перенастройке диспетчеризации.
Набор портов позволяет получать сообщения от нескольких источников событий или сообщений через одну точку ожидания. Членство относится к праву приёма, а не к общей глобальной идентичности порта. Имя порта, действительное в другой задаче, или право отправки, используемое в другом месте, не доказывает наличие ожидаемого членства на стороне приёма здесь.
Что проверить
- Не был ли порт добавлен в другой набор портов или удалён ранее другим путём.
- Не выполняется ли очистка дважды или после частично неудачной настройки.
- Не смешивает ли приложение имена портов из пространств имён разных задач.
- Может ли параллельный код уничтожить или перенастроить право приёма до завершения операции членства.
Правильное исправление — согласовать записанное приложением состояние набора портов с фактическим жизненным циклом права приёма. Слепые повторы могут скрыть гонку и оставить топологию диспетчеризации событий неверной.
Ссылки
- XNU: kern_return.h
- Руководство Apple по программированию ядра: порты и права Mach
- Справочное руководство GNU Mach: интерфейс управления портами
Нужно найти другой код? Найти другой код состояния или ошибки.