| Предыдущий | Следующий |
| 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 способен имитировать повторный вход при следующем обычном вызове.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
