| Предыдущий | Следующий |
| RPC_E_CONNECTION_TERMINATED | RPC_E_CLIENT_DIED |
RPC_E_SERVER_DIED
Что означает RPC_E_SERVER_DIED
RPC_E_SERVER_DIED означает, что процесс COM-сервера исчез во время удалённого вызова. Важная особенность этого кода: клиент не всегда может определить, успел ли сервер выполнить операцию до завершения процесса. Поэтому безусловный повтор опасен для действий с побочным эффектом.
Что проверить
- Сохраните PID и поколение процесса сервера, IID, метод и время начала вызова.
- Сопоставьте момент отказа с WER, журналом Application, дампом падения, остановкой службы или обновлением.
- Определите, могла ли операция изменить внешнее состояние до гибели процесса.
- После перезапуска создайте новый COM-прокси вместо повторного использования старого объекта.
Если результат операции неизвестен, сначала прочитайте фактическое состояние и только затем решайте, нужен ли повтор. Это отличает безопасное восстановление от механического retry. Для неидемпотентных методов полезно иметь идентификатор операции, позволяющий серверу распознать уже применённый запрос.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.