| Предыдущий | Следующий |
| KERN_INVALID_NAME | KERN_INVALID_RIGHT |
KERN_INVALID_TASK
KERN_INVALID_TASK означает, что цель, переданная операции Mach, не является активной задачей. В терминологии Mach задача владеет такими ресурсами, как виртуальное адресное пространство и пространство имён прав портов; она связана с работающим потоком или процессом POSIX, но не тождественна им.
Полученный ранее порт задачи не гарантирует вечной пригодности цели. Задача может завершиться, либо операция может получить устаревшую или неподходящую ссылку на задачу. Поэтому результат прежде всего указывает на время жизни объекта и выбор цели, а не на адрес памяти или содержимое сообщения IPC, которые могли передаваться вместе с ним.
Диагностические вопросы
- Была ли задача активна в момент начала вызова?
- Сохранял и освобождал ли код ссылку на задачу согласно контракту API?
- Могли ли выход, замена наподобие exec, отсоединение отладчика или гонка завершения сделать цель недействительной?
- Не путает ли вызывающая сторона порт задачи с портом потока, узла или обычным портом Mach?
Для операций с другим процессом записывайте идентичность цели и момент получения порта задачи. Это позволяет отличить устаревшую цель от сбоя внутри запрошенной операции VM или IPC.
Ссылки
- XNU: kern_return.h
- Руководство Apple по программированию ядра: порты и права Mach
- Справочное руководство GNU Mach: интерфейс управления портами
Нужно найти другой код? Найти другой код состояния или ошибки.