| Предыдущий | Следующий |
| KERN_INVALID_VALUE | KERN_INVALID_CAPABILITY |
KERN_UREFS_OVERFLOW
KERN_UREFS_OVERFLOW сообщает, что операция превысила бы допустимое количество пользовательских ссылок на право порта Mach. Право порта является возможностью в пространстве имён задачи, и Mach отслеживает число пользовательских ссылок, которыми задача владеет для этого права.
Это ошибка учёта ресурсов, а не указание на неизвестный порт. Обычно она означает, что код многократно получает, копирует или удерживает права, не выполняя соответствующее освобождение. Поскольку счётчик связан с правом в пространстве имён одной задачи, анализ только удалённой службы или числового имени порта не выявляет утечку.
Полезные шаги исследования
- Проверьте каждый путь создания, копирования, вставки или получения проблемного права.
- Сопоставьте эти операции с требуемым API освобождением или уничтожением.
- Проверьте пути ошибок и отмены: они часто пропускают освобождение, выполняемое при нормальном завершении.
- Используйте журналирование владения вместо повторов операции, поскольку новое получение только усугубит переполнение.
Исправление состоит в восстановлении сбалансированного владения правами. Отношение к ошибке как к временному транспортному сбою может скрыть постоянно растущую утечку ресурсов IPC.
Ссылки
- XNU: kern_return.h
- Руководство Apple по программированию ядра: порты и права Mach
- Справочник GNU Mach: интерфейс управления портами
Нужно найти другой код? Найти другой код состояния или ошибки.