Site icon EfmSoft

Что означает код NTSTATUS 0xC0000704 (STATUS_RECURSIVE_DISPATCH)?

 
Предыдущий Следующий
STATUS_REQUEST_CANCELED STATUS_LPC_RECEIVE_BUFFER_EXPECTED

STATUS_RECURSIVE_DISPATCH

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

STATUS_RECURSIVE_DISPATCH — диспетчер callback/message path был повторно вызван до завершения предыдущего входа.

Речь не просто о глубоком стеке функций. Некоторые пути Windows предполагают, что один callback владеет контекстом до возврата; повторный вход через hook, message pump, completion routine или синхронный межкомпонентный вызов нарушает этот контракт.

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

  • Снимите полный стек первого и рекурсивного входа, включая hooks, message pumping и callbacks, которые могут снова вызвать прикладной код.
  • Во время диагностики отмечайте вход/выход dispatcher-а счётчиком глубины на поток.
  • Проверьте синхронный запрос из callback-а: ответ на него может требовать работы того же dispatcher-а, который сейчас заблокирован.
  • Вынесите блокирующую или повторно входящую работу в очередь и продолжайте её после возврата из внешнего dispatcher-а.

Также проверьте cleanup после исключения или отмены: ошибочно оставленный recursion guard способен имитировать повторный вход при следующем обычном вызове.

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


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

Exit mobile version