Что означает код HRESULT 0x80370308 (WHV_E_INVALID_VP_STATE)?

 
Предыдущий Следующий
WHV_E_VP_DOES_NOT_EXIST WHV_E_INVALID_VP_REGISTER_NAME

WHV_E_INVALID_VP_STATE

Вызовы управления виртуальным процессором предъявляют требования к параллелизму и состоянию

WHV_E_INVALID_VP_STATE указывает, что виртуальный процессор существует, но его текущее состояние выполнения не допускает запрошенную операцию. Типичной границей является WHvRunVirtualProcessor: пока виртуальный процессор выполняется в одном потоке, другому управляющему пути может потребоваться отменить выполнение и дождаться возврата вызова, прежде чем изменять или уничтожать состояние.

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

Что проверить и как подтвердить исправление

  • Назначьте каждому виртуальному процессору единственного владельца выполнения и не допускайте одновременных WHvRunVirtualProcessor .
  • Используйте WHvCancelRunVirtualProcessor и дождитесь завершения вызова запуска до уничтожения или несовместимых обновлений.
  • При ошибке записывайте запрошенный API, индекс виртуального процессора и переход состояния контроллера.
  • Сериализуйте сброс раздела и удаление виртуального процессора относительно всех активных процессорных потоков.
  • Рассматривайте повторяющиеся результаты недопустимого состояния как ошибку жизненного цикла в стеке виртуализации, а не как обратное давление гостевой нагрузки.

Ссылки


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