| Предыдущий | Следующий |
| RPC_E_FAULT | RPC_E_CHANGED_MODE |
RPC_E_SERVERFAULT
RPC_E_SERVERFAULT: смысл кода и диагностика
RPC_E_SERVERFAULT — HRESULT, относящийся к области COM/RPC. COM-сервер вызвал исключение при обработке запроса.
Применительно к RPC_E_SERVERFAULT этот HRESULT возвращён инфраструктурой COM. В случае RPC_E_SERVERFAULT полезная причина определяется границей процесса/апартамента, интерфейсом, методом и тем, какая сторона не смогла маршалировать данные.
Практический вывод для RPC_E_SERVERFAULT: этот HRESULT фиксирует описанное условие, но сам по себе не показывает, какой участник операции первым нарушил контракт. Для RPC_E_SERVERFAULT найдите первый вызов, вернувший статус, и только после этого меняйте конфигурацию подсистемы COM/RPC.
Как читать имя RPC_E_SERVERFAULT
Имя RPC_E_SERVERFAULT помогает сузить поиск: SERVERFAULT — технический маркер «serverfault». Эти части имени не заменяют документацию API, но позволяют проверить, что журнал и код относятся к одному и тому же условию.
Разбор условия ошибки
Применительно к RPC_E_SERVERFAULT код затрагивает соединение или удалённую сторону. В случае RPC_E_SERVERFAULT разделите разрешение имени, маршрут, установление транспорта, TLS/аутентификацию и прикладной ответ.
- Для RPC_E_SERVERFAULT проверьте endpoint, DNS, маршрут, прокси и сетевую трассировку именно на этапе, где появился статус.
- При разборе RPC_E_SERVERFAULT сверьте типы, размеры и время жизни всех входных/выходных параметров, особенно указателей и пользовательских структур.
- При разборе RPC_E_SERVERFAULT после разрыва соединения или отключения объекта создайте новый COM-прокси, а не повторяйте вызов через старый.
- При разборе RPC_E_SERVERFAULT запишите CLSID/IID, номер метода, границу процесса или апартамента и сторону, на которой получен HRESULT.
- При разборе RPC_E_SERVERFAULT проверьте регистрацию интерфейса и proxy/stub, разрядность компонентов и совместимость type library.
Диагностический минимум
- Для RPC_E_SERVERFAULT проверьте тот же метод in-proc или с минимальными параметрами, чтобы локализовать маршалинг.
- Для RPC_E_SERVERFAULT соберите дампы клиента и сервера вокруг первого сбоя и сохраните correlation между вызовами.
- Для RPC_E_SERVERFAULT включите журналирование RPC/COM только на время воспроизведения и зафиксируйте идентификатор интерфейса.
Как подтвердить исправление
Применительно к RPC_E_SERVERFAULT проверка исправления RPC_E_SERVERFAULT должна включать успешный рабочий путь, предсказуемый отказ на некорректном входе и отсутствие новых предупреждений в журналах подсистемы COM/RPC.
Ссылки по RPC_E_SERVERFAULT
Нужно найти другой код? Найти другой код состояния или ошибки.