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