Site icon EfmSoft

Что означает код возврата ядра macOS 0x1000400C (MACH_RCV_BODY_ERROR)?

 
Предыдущий Следующий
MACH_RCV_HEADER_ERROR MACH_RCV_INVALID_TYPE

MACH_RCV_BODY_ERROR

Частичный приём сложного сообщения

MACH_RCV_BODY_ERROR означает, что заголовок принят, но один или несколько элементов тела не удалось доставить из-за отсутствия у получателя или ядра необходимого ресурса IPC либо виртуальной памяти. Это относится к дескрипторам прав портов и внестрочной памяти. Mach пытается обработать тело и обозначает класс ресурса дополнительными битами статуса, однако получатель не должен считать, что каждый дескриптор сохранился без изменений.

Для сложного запроса это не только признак нехватки ресурсов, но и проблема целостности протокола. Сервер, продолжающий работу при отсутствии переданных прав или с обнулённой внестрочной областью, может действовать с неполными полномочиями или неполными данными. Обычно правильная политика состоит в проверке всех обязательных дескрипторов, отклонении или отсрочке неполной работы и явном определении семантики повторной попытки для отправителя.

Что зафиксировать

  • Запишите базовый результат, все биты нехватки ресурсов, идентификатор сообщения, количество дескрипторов и сведения о том, какие дескрипторы отсутствуют или непригодны.
  • Проверяйте каждое принятое право и каждую внестрочную область до вызова обработчика сообщения.
  • Установите ограничения приложения на число дескрипторов и объём внестрочных данных, чтобы защитить получателя под нагрузкой.
  • Спроектируйте ответ или повтор так, чтобы клиенты могли отличить неполный приём от обычной ошибки проверки на стороне сервера.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.

Exit mobile version