| Предыдущий | Следующий |
| KERN_ABORTED | KERN_INVALID_TASK |
KERN_INVALID_NAME
KERN_INVALID_NAME означает, что переданное имя порта Mach не обозначает право порта в пространстве имён соответствующей задачи. Недостаточно, что это число было действительным раньше, напечатано другой задачей или похоже на известный служебный порт.
Доступ Mach основан на возможностях. Задача может работать с портом только через право, которым она действительно владеет в своём пространстве имён. Права можно передавать, переименовывать, уничтожать или удалять; их числовые имена не являются стабильными межпроцессными дескрипторами.
Что исследовать
- Не было ли право освобождено или порт уничтожен до этого вызова.
- Не использовал ли код случайно имя порта из другой задачи или процесса.
- Передала ли IPC-операция ожидаемый тип права и сохранил ли его получатель.
- Не сделала ли очистка после ошибки локальное имя порта недействительным, после чего более поздний код продолжил его использовать.
Сравните этот код с KERN_INVALID_RIGHT( KERN_INVALID_NAME означает, что никакое право вообще не обозначено, тогда как KERN_INVALID_RIGHT означает, что право существует, но имеет неподходящий для операции тип.
Ссылки
- XNU: kern_return.h
- Apple Kernel Programming Guide: порты и права Mach
- GNU Mach Reference Manual: интерфейс управления портами
Нужно найти другой код? Найти другой код состояния или ошибки.