Что означает код NTSTATUS 0xC000070D (STATUS_THREADPOOL_RELEASE_MUTEX_ON_COMPLETION_FAILED)?

 
Предыдущий Следующий
STATUS_THREADPOOL_RELEASE_SEMAPHORE_ON_COMPLETION_FAILED STATUS_THREADPOOL_FREE_LIBRARY_ON_COMPLETION_FAILED

STATUS_THREADPOOL_RELEASE_MUTEX_ON_COMPLETION_FAILED

Что означает STATUS_THREADPOOL_RELEASE_MUTEX_ON_COMPLETION_FAILED

STATUS_THREADPOOL_RELEASE_MUTEX_ON_COMPLETION_FAILED — пул потоков не смог освободить mutex после обратного вызова.

Что проверить

Зафиксируйте поток и вызов, на котором появился код, а также состояние потока до и после операции.

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

Исходная формулировка

  • A deferred mutex release failed when the callback returned.
  • ReleaseMutexWhenCallbackReturns defers releasing a mutex until the callback is leaving the worker thread. A failure usually points to invalid handle lifetime or ownership mismatch. A mutex can only be released by its owning thread, so moving ownership or attempting an additional release breaks the contract.
  • Do not transfer mutex ownership to a different thread while a deferred release is registered.
  • Avoid combining direct ReleaseMutex calls with callback-return release for the same acquisition.
  • This status should trigger an audit of the entire lock path. The shared state may still be protected by a mutex that was never released, or another cleanup path may have released it prematurely. Continuing as though finalization succeeded can turn the original bug into a later deadlock.

Технические ссылки


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