| Предыдущий | Следующий |
| kIOReturnError | kIOReturnNoResources |
kIOReturnNoMemory
Под памятью может подразумеваться не только куча
kIOReturnNoMemory указывает на неудачное выделение памяти в операции IOKit. В пути ввода-вывода ресурс может требоваться для подготовки дескриптора памяти, создания отображения, построения списка scatter/gather или выделения состояния драйвера. Ошибка не ограничивается обычным выделением из кучи приложения.
Подготовка передачи IOKit может требовать, чтобы буферы находились в физической памяти и оставались закреплёнными на время запроса. Поэтому важны размер, сегментация, срок жизни и момент выполнения запроса. Связанный результат kIOReturnNoResources имеет более широкое значение; здесь речь именно о неудачном выделении, поэтому увеличение глубины очереди или слепой повтор того же запроса может усилить давление на память.
Полезные данные
- Запишите размер запроса, число сегментов, направление, стадию выделения и количество незавершённых передач.
- Проверьте освобождение дескрипторов памяти, отображений и объектов завершения на всех путях завершения и отмены.
- Проверьте меньший или последовательно выполняемый запрос, чтобы отличить фиксированный предел выделения от накопленного давления.
- Не выполняйте выделение, удерживая command gate или другую блокировку, если окружающий API IOKit способен блокироваться.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.