Что означает код NTSTATUS 0xC0190018 (STATUS_CURRENT_TRANSACTION_NOT_VALID)?

 
Предыдущий Следующий
STATUS_TRANSACTION_INVALID_MARSHALL_BUFFER STATUS_LOG_GROWTH_FAILED

STATUS_CURRENT_TRANSACTION_NOT_VALID

Поток содержит устаревший или неверно восстановленный контекст транзакции

Код, поддерживающий KTM, может связать текущую транзакцию с потоком, чтобы API участвовали в окружающем контексте. Это состояние означает, что сам контекст потока ссылается на непригодный дескриптор, часто после закрытия транзакции, неверного восстановления контекста или переноса работы между потоками без корректного распространения.

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

Что следует проверить

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

Ссылки


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