Что означает код NTSTATUS 0xC000004A (STATUS_SUSPEND_COUNT_EXCEEDED)?

 
Предыдущий Следующий
STATUS_SECTION_NOT_IMAGE STATUS_THREAD_IS_TERMINATING

STATUS_SUSPEND_COUNT_EXCEEDED

Счётчик приостановки потока уже достиг максимума

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

Цель диагностики — несогласованные приостановки, а не загрузка процессора. Записывайте предыдущие значения счётчика, возвращённые операциями приостановки и возобновления, и определите все подсистемы, способные приостанавливать один поток. Отладчики, сбор дампов, сторожевые таймеры и прикладной код иначе могут накладывать независимые приостановки. Многократный вызов ResumeThread без учёта владения также опасен, поскольку может снять приостановку другого компонента.

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

  • Записывайте предыдущие значения счётчика, возвращённые SuspendThread и ResumeThread.
  • Определите все компоненты, которым разрешено приостанавливать целевой поток.
  • Сопоставляйте каждую принадлежащую компоненту приостановку с одним возобновлением, а не принудительно обнуляйте счётчик.

Ссылки


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