| Предыдущий | Следующий |
| KERN_LOCK_SET_DESTROYED | KERN_LOCK_OWNED |
KERN_LOCK_UNSTABLE
Ошибка владения из-за завершения потока
KERN_LOCK_UNSTABLE серьёзнее обычного состязания. XNU использует этот статус, когда поток-владелец блокировки завершился, не освободив её, из-за чего состояние владения стало непригодно для запрошенной операции.
Слепая повторная попытка может скрыть важный факт: поток завершился внутри критической секции. Полезные данные первопричины — завершившийся поток, защищаемое состояние и операция, выполнявшаяся при удержании блокировки.
Что проверить
- Зафиксируйте идентичность блокировки или набора блокировок и последнюю активность завершившегося потока.
- Определите, было ли завершение потока ожидаемым, отменённым, принудительным или вызванным исключением.
- Проверьте частично обновлённые данные, защищённые блокировкой.
- Проверьте порядок завершения, который позволил владельцу исчезнуть до окончания очистки.
Ссылки
- Apple XNU: kern_return.h
- Руководство Apple по программированию ядра: блокировки и синхронизация
- Apple Kernel Programming Guide: задачи и потоки
Нужно найти другой код? Найти другой код состояния или ошибки.