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