| Предыдущий | Следующий |
| KERN_NOT_DEPRESSED | KERN_LOCK_SET_DESTROYED |
KERN_TERMINATED
Жизненный цикл объекта, а не синтаксис параметров
KERN_TERMINATED означает, что указанный объект Mach достиг конечного состояния до операции или во время неё. Имя порта или дескриптор может всё ещё отображаться в диагностике приложения, но стоящий за ним объект ядра больше нельзя использовать для этого запроса.
Поэтому следует исследовать гонку жизненного цикла. Этот статус отличается от KERN_INVALID_NAME и KERN_INVALID_RIGHT, которые описывают разрешение имени или права, и от KERN_INVALID_TASK, который относится именно к неактивному целевому заданию.
Что проверить
- Запишите, где был получен объект и где было замечено его завершение.
- Сопоставьте события завершения работы, отмены, выхода службы и освобождения порта.
- Убедитесь, что асинхронные обратные вызовы не могут запускать новую работу после начала завершения владельца объекта.
- Используйте поддерживаемый подсистемой сигнал завершения или недействительности, прежде чем отбрасывать исходную причину.
Ссылки
- Apple XNU: kern_return.h
- Руководство Apple по программированию ядра: задания, потоки и порты
- Руководство Apple по программированию ядра: синхронизация и ожидания, чувствительные к завершению работы
Нужно найти другой код? Найти другой код состояния или ошибки.