Поделиться через


Средство проверки приложений — коды остановки — прочее

В этом наборе тестов содержатся следующие коды остановки.

Опасный вызов TerminateThread.

Вероятная причина

Эта остановка создается, если поток (идентификатор потока — параметр 1) завершается явным образом с помощью TerminateThread. Эта функция очень опасна, так как она вызывает повреждение данных и взаимоблокировки (согласно MSDN).

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Идентификатор потока для вызывающего объекта Terminatethread.
  • Параметр 2  -  Не используется.
  • Параметр 3  -  Не используется.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Опасно
  • Идентификатор остановки:  TERMINATE_THREAD_CALL
  • Код остановки:  100NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Потенциальное переполнение стека в условиях нехватки памяти.

Вероятная причина

Эта остановка создается, если начальный размер фиксации стека потока таким образом, что переполнение стека может быть вызвано в условиях нехватки памяти, если стек не может быть расширен.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  -  Не используется.
  • Параметр 2  -  Не используется.
  • Параметр 3  -  Не используется.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Опасно
  • Идентификатор остановки:  STACK_OVERFLOW
  • Код остановки:  100NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

ExitProcess вызывается при выполнении нескольких потоков.

Вероятная причина

Эта остановка создается, если поток вызывает ExitProcess при выполнении нескольких потоков. В этом случае для каждого потока будет вызван внутренний вызов TerminateThread, что может создать взаимоблокировку или повреждение данных.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  –  Количество выполняемых потоков.
  • Параметр 2  -  Не используется.
  • Параметр 3  -  Не используется.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Опасно
  • Идентификатор остановки:  INVALID_EXIT_PROCESS_CALL
  • Код остановки:  100NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

LoadLibrary вызывается во время dllMain.

Вероятная причина

Эта остановка создается, если код внутри DllMain вызывает LoadLibrary или FreeLibary. Это поведение запрещено MSDN.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Имя dll (используйте du для дампа).
  • Параметр 2  Базовый адрес Dll .
  • Параметр 3  -  Не используется.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Опасно
  • Идентификатор остановки:  INVALID_LOAD_LIBRARY_CALL
  • Код остановки:  100NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

FreeLibrary вызывается во время dllMain.

Вероятная причина

Эта остановка создается, если код внутри DllMain вызывает LoadLibrary или FreeLibary. Это поведение запрещено MSDN.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Имя dll (используйте du для дампа).
  • Параметр 2  Базовый адрес Dll .
  • Параметр 3  -  Не используется.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Опасно
  • Идентификатор остановки:  INVALID_FREE_LIBRARY_CALL
  • Код остановки:  100NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Метод SetProcessWorkingSetSize вызывается с параметром MinimumWorkingSetSize = 0xFFFFFFFF.

Вероятная причина

Используйте MinimumWorkingSetSize = (SIZE_T) -1.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  -  Не используется.
  • Параметр 2  -  Не используется.
  • Параметр 3  -  Не используется.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Опасно
  • Идентификатор остановки:  INVALID_MINIMUM_PROCESS_WORKING_SIZE
  • Код остановки:  100NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Метод SetProcessWorkingSetSize вызывается с параметром MaximumWorkingSetSize = 0xFFFFFFFF.

Вероятная причина

Используйте MaximumWorkingSetSize = (SIZE_T) -1.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  -  Не используется.
  • Параметр 2  -  Не используется.
  • Параметр 3  -  Не используется.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Опасно
  • Идентификатор остановки:  INVALID_MAXIMUM_PROCESS_WORKING_SIZE
  • Код остановки:  100NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Метод SetProcessWorkingSetSizeEx вызывается с параметром MinimumWorkingSetSize = 0xFFFFFFFF.

Вероятная причина

Используйте MinimumWorkingSetSize = (SIZE_T) -1.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  -  Не используется.
  • Параметр 2  -  Не используется.
  • Параметр 3  -  Не используется.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Опасно
  • Идентификатор остановки:  INVALID_MINIMUM_PROCESS_WORKING_SIZE_EX
  • Код остановки:  100NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Метод SetProcessWorkingSetSizeEx вызывается с параметром MaximumWorkingSetSize = 0xFFFFFFFF.

Вероятная причина

Используйте MaximumWorkingSetSize = (SIZE_T) -1.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  -  Не используется.
  • Параметр 2  -  Не используется.
  • Параметр 3  -  Не используется.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Опасно
  • Идентификатор остановки:  INVALID_MAXIMUM_PROCESS_WORKING_SIZE_EX
  • Код остановки:  100NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Поток не может владеть критически важным разделом.

Вероятная причина

Эта остановка создается, если поток (идентификатор потока — параметр 1) завершается, приостанавливается или находится в состоянии (рабочий поток завершил рабочий элемент), в котором он не может содержать критически важный раздел. Текущий поток является виновником. Чтобы отладить эту остановку, используйте следующие команды отладчика: $ kb — для получения текущей трассировки стека. Если текущий поток является владельцем критического раздела, скорее всего, он вызывает ExitThread. Текущий поток должен освободить критически важный раздел перед выходом. Если текущий поток вызывает TerminateThread или SuspendThread, он не должен делать этого для потока, включающего критически важный раздел. $ !cs -s parameter2 — дамп сведений об этом критическом разделе. $ ln parameter2 — для отображения символов рядом с адресом критического раздела. Это должно помочь определить критически важный раздел утечки. $ dps parameter4 — для дампа трассировки стека для инициализации этого критического раздела.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Thread ID.
  • Параметр 2  - Критический адрес раздела.
  • Параметр 3  - Критически важный адрес сведений об отладке раздела.
  • Параметр 4  - Критическое трассировка стека инициализации раздела.

Дополнительная информация
  • Тестовый уровень:  Замки
  • Идентификатор остановки:  EXIT_THREAD_OWNS_LOCK
  • Код остановки:  200NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Выгрузка библиотеки DLL, содержащей активный критически важный раздел.

Вероятная причина

Эта остановка создается, если библиотека DLL имеет глобальную переменную, содержащую критически важный раздел, и библиотека DLL выгружается, но критически важный раздел не был удален. Для отладки этой остановки используйте следующие команды отладчика: $ du parameter3 — для дампа имени библиотеки DLL-файла. $ .reload dllname или .reload dllname = parameter4 — для перезагрузки символов для этой библиотеки DLL. $ !cs -s parameter1 — дамп сведений об этом критическом разделе. $ ln parameter1 — для отображения символов рядом с адресом критического раздела. Это должно помочь определить критически важный раздел утечки. $ dps parameter2 — для дампа трассировки стека для инициализации этого критического раздела.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Критический адрес раздела.
  • Параметр 2  - Критическое трассировка стека инициализации раздела.
  • Параметр 3  Адрес имени DLL .
  • Параметр 4  - DLL базовый адрес.

Дополнительная информация
  • Тестовый уровень:  Замки
  • Идентификатор остановки:  LOCK_IN_UNLOADED_DLL
  • Код остановки:  200NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Освобождение блока кучи, содержащего активный критический раздел.

Вероятная причина

Эта остановка создается, если выделение кучи содержит критически важный раздел, выделение освобождается и критически важный раздел не удаляется. Для отладки этой остановки используйте следующие команды отладчика: $ !cs -s parameter1 — дамп сведений об этом критическом разделе. $ ln parameter1 — для отображения символов рядом с адресом критического раздела. Это должно помочь определить критически важный раздел утечки. $ dps parameter2 — для дампа трассировки стека для инициализации этого критического раздела. $ parameter3 и parameter4 могут помочь понять, где был выделен этот блок кучи (размер выделения, вероятно, значительный).

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Критический адрес раздела.
  • Параметр 2  - Критическое трассировка стека инициализации раздела.
  • Параметр 3  - Адрес блока кучи.
  • Параметр 4  - Размер блока кучи.

Дополнительная информация
  • Тестовый уровень:  Замки
  • Идентификатор остановки:  LOCK_IN_FREED_HEAP
  • Код остановки:  200NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Двойной инициализированный или поврежденный критический раздел.

Вероятная причина

Обычно эта остановка создается, если критически важный раздел был инициализирован несколько раз. В этом случае parameter3 и parameter4 являются адресами трассировки стека для двух из этих инициализаций. В некоторых других случаях эту остановку можно остановить, если критически важный раздел или его отладочная информационная структура повреждены. Во втором случае возможно, что параметры 3 и parameter4 являются недопустимыми и бесполезными. Для отладки этой остановки: $ !cs -s -d parameter2 — дамп сведений об этом критическом разделе. $ ln parameter1 — для отображения символов рядом с адресом критического раздела. Это может помочь определить критически важный раздел, если это глобальная переменная. $ dps parameter3 и dps parameter4 — для определения двух путей кода для инициализации этого критического раздела.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Критический адрес раздела.
  • Параметр 2  - Адрес структуры отладочной информации, найденной в активном списке.
  • Параметр 3  - Первая трассировка стека инициализации.
  • Параметр 4  - Вторая трассировка стека инициализации.

Дополнительная информация
  • Тестовый уровень:  Замки
  • Идентификатор остановки:  LOCK_DOUBLE_INITIALIZE
  • Код остановки:  200NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Свободная память, содержащая активный критически важный раздел.

Вероятная причина

Эта остановка создается, если память, содержащая критически важный раздел, была освобождена, но критический раздел не был удален с помощью DeleteCriticalSection. Для отладки этой остановки используйте следующие команды отладчика: $ !cs -s -d parameter2 — дамп сведений об этом критическом разделе. $ dps parameter3 — для определения пути кода для инициализации этого критического раздела. В большинстве случаев средство проверки блокировки обнаруживает сразу же утечку критически важных разделов, содержащихся в выделении кучи, диапазоне DLL, выделении виртуальной памяти или сопоставленном диапазоне памяти MapViewOfFile, и в этих случаях выполняет различные остановки. Так что есть очень мало случаев осталось для этой остановки проверяющего. Блокировка должна находиться в диапазоне памяти, освобожденном кодом в режиме ядра, или в диапазоне между процессами api, такими как VirtualFreeEx. Чаще всего эта остановка возникает, если предыдущая остановка (например, LOCK_IN_FREED_HEAP или LOCK_IN_UNLOADED_DLL) была продолжена путем нажатия клавиши "g" в консоли отладчика.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Критический адрес раздела.
  • Параметр 2  - Критически важный адрес сведений об отладке раздела.
  • Параметр 3  - Критическое трассировка стека инициализации раздела.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Замки
  • Идентификатор остановки:  LOCK_IN_FREED_MEMORY
  • Код остановки:  200NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Поврежденный критический раздел.

Вероятная причина

Эта остановка создается, если поле DebugInfo критического раздела указывает на освобожденную память. Обычно в списке активных критических разделов находится другая допустимая структура DebugInfo. Без повреждения два указателя должны быть идентичными. Для отладки этой остановки используйте следующие команды отладчика: $ !cs -s -d parameter3 — дамп сведений об этом критическом разделе на основе текущего содержимого структуры сведений об отладке, найденной в активном списке (эта структура редко повреждается, поэтому обычно эти сведения являются надежными). $ !cs -s parameter1 — дамп сведений об этом критическом разделе на основе текущего содержимого структуры критического раздела (структура уже повреждена, поэтому иногда эти сведения не являются надежными). $ dps parameter4 — для определения пути кода для инициализации этого критического раздела. Создайте дамп критического раздела в параметре address1 и найдите шаблон повреждения. С хорошими символами для ntdll.dl можно использовать следующие команды: $ dt ntdll!_RTL_CRITICAL_SECTION LOCK_ADDRESS $ dt ntdll!_RTL_CRITICAL_SECTION_DEBUG DEBUG_ADDRESS

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Критический адрес раздела.
  • Параметр 2  — Недопустимый адрес сведений об отладке этого критического раздела.
  • Параметр 3  - Адрес отладочной информации, найденной в активном списке.
  • Параметр 4  Трассировка стека инициализации .

Дополнительная информация
  • Тестовый уровень:  Замки
  • Идентификатор остановки:  LOCK_CORRUPTED
  • Код остановки:  200NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Недопустимый поток владельца критического раздела.

Вероятная причина

Эта остановка создается, если идентификатор потока владельца недопустим в текущем контексте. Для отладки этой остановки: $ !cs -s parameter1 — дамп сведений об этом критическом разделе. $ ln parameter1 — для отображения символов рядом с адресом критического раздела. Это поможет определить критически важный раздел.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Критический адрес раздела.
  • Параметр 2  - Владение потоком.
  • Параметр 3  - Ожидаемый поток владельцев.
  • Параметр 4  - Критически важный адрес сведений об отладке раздела.

Дополнительная информация
  • Тестовый уровень:  Замки
  • Идентификатор остановки:  LOCK_INVALID_OWNER
  • Код остановки:  200NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Недопустимое число рекурсий критических разделов.

Вероятная причина

Эта остановка создается, если поле счетчика рекурсий структуры критического раздела является недопустимым в текущем контексте. Для отладки этой остановки: $ !cs -s parameter1 — дамп сведений об этом критическом разделе. $ ln parameter1 — для отображения символов рядом с адресом критического раздела. Это поможет определить критически важный раздел.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Критический адрес раздела.
  • Параметр 2  - Количество рекурсий.
  • Параметр 3  - Ожидаемое число рекурсий.
  • Параметр 4  - Критически важный адрес сведений об отладке раздела.

Дополнительная информация
  • Тестовый уровень:  Замки
  • Идентификатор остановки:  LOCK_INVALID_RECURSION_COUNT
  • Код остановки:  200NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Удаление критического раздела с недопустимым числом блокировок.

Вероятная причина

Эта остановка создается, если критически важный раздел принадлежит потоку, если он удален, или если критический раздел не инициализирован. Для отладки этой остановки: $ !cs -s parameter1 — дамп сведений об этом критическом разделе. Если поток-владение равно 0, критически важный раздел не инициализирован. $ ln parameter1 — для отображения символов рядом с адресом критического раздела. Это поможет определить критически важный раздел.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Критический адрес раздела.
  • Параметр 2  - Количество блокировок.
  • Параметр 3  - Ожидаемое число блокировок.
  • Параметр 4  - Владение потоком.

Дополнительная информация
  • Тестовый уровень:  Замки
  • Идентификатор остановки:  LOCK_INVALID_LOCK_COUNT
  • Код остановки:  200NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Критический раздел перевыпущен или поврежден.

Вероятная причина

Эта остановка создается, если критически важный раздел освобождается больше раз, чем текущий поток получил его. Для отладки этой остановки: $ !cs -s parameter1 — дамп сведений об этом критическом разделе. $ !cs -s -d parameter4 — дамп сведений об этом критическом разделе. $ ln parameter1 — для отображения символов рядом с адресом критического раздела. Это поможет определить критически важный раздел.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Критический адрес раздела.
  • Параметр 2  - Количество блокировок.
  • Параметр 3  - Ожидаемое число блокировок.
  • Параметр 4  - Критически важный адрес сведений об отладке раздела.

Дополнительная информация
  • Тестовый уровень:  Замки
  • Идентификатор остановки:  LOCK_OVER_RELEASED
  • Код остановки:  200NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Критический раздел не инициализирован.

Вероятная причина

Эта остановка создается, если критически важный раздел используется без инициализации или после удаления. Для отладки этой остановки: $ ln parameter1 — для отображения символов рядом с адресом критического раздела. Это поможет определить критически важный раздел.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Критический адрес раздела.
  • Параметр 2  - Критически важный адрес сведений об отладке раздела.
  • Параметр 3  -  Не используется.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Замки
  • Идентификатор остановки:  LOCK_NOT_INITIALIZED
  • Код остановки:  200NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Критический раздел уже инициализирован.

Вероятная причина

Эта остановка создается, если текущий поток повторно инициализирует критически важный раздел. Для отладки этой остановки: $ !cs -s parameter1 или !cs -s -d parameter2 — дамп сведений об этом критическом разделе. $ ln parameter1 — для отображения символов рядом с адресом критического раздела. Это может помочь определить критически важный раздел, если это глобальная переменная. $ dps parameter3 — для определения пути кода для первой инициализации этого критического раздела. $ kb — для отображения текущей трассировки стека, которая повторно инициализирует этот критически важный раздел.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Критический адрес раздела.
  • Параметр 2  - Критически важный адрес сведений об отладке раздела.
  • Параметр 3  - Первая трассировка стека инициализации. Используйте dps для дампа, если значение не равно NULL
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Замки
  • Идентификатор остановки:  LOCK_ALREADY_INITIALIZED
  • Код остановки:  200NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

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

Вероятная причина

Эта остановка создается, если текущий поток вызывает VirtualFree для блока памяти, содержащего активный критически важный раздел. Приложение должно вызвать DeleteCriticalSection в этом критическом разделе, прежде чем, если освобождает эту память. $ kb — для отображения текущей трассировки стека, которая вызывает VirtualFree. Вероятным виновником является библиотека DLL, которая вызывает VirtualFree. $ !cs -s parameter1 — дамп сведений об этом критическом разделе. $ dps parameter2 — для определения пути кода для инициализации этого критического раздела.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Критический адрес раздела.
  • Параметр 2  - Критическое трассировка стека инициализации раздела.
  • Параметр 3  - Адрес блока памяти.
  • Параметр 4  - Размер блока памяти.

Дополнительная информация
  • Тестовый уровень:  Замки
  • Идентификатор остановки:  LOCK_IN_FREED_VMEM
  • Код остановки:  200NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

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

Вероятная причина

Эта остановка создается, если текущий поток вызывает UnmapViewOfFile для блока памяти, содержащего активный критический раздел. Приложение должно вызвать Метод DeleteCriticalSection в этом критическом разделе, прежде чем, если эта память будет удалена. $ kb — для отображения текущей трассировки стека, которая вызывает UnmapViewOfFile . Вероятным виновником является библиотека DLL, которая вызывает UnmapViewOfFile. $ !cs -s parameter1 — дамп сведений об этом критическом разделе. $ dps parameter2 — для определения пути кода для инициализации этого критического раздела.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Критический адрес раздела.
  • Параметр 2  - Критическое трассировка стека инициализации раздела.
  • Параметр 3  - Адрес блока памяти.
  • Параметр 4  - Размер блока памяти.

Дополнительная информация
  • Тестовый уровень:  Замки
  • Идентификатор остановки:  LOCK_IN_UNMAPPED_MEM
  • Код остановки:  200NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Текущий поток не имеет критически важных разделов.

Вероятная причина

Эта остановка создается, если текущий поток вызывает LeaveCriticalSection, но, согласно внутреннему бухгалтерскому учету средства проверки, ему не принадлежит критически важный раздел. Если параметр 2 равен нулю, вероятно, это ошибка в текущем потоке. Он либо пытается оставить критический раздел, который не был введен, либо, возможно, вызывает LeaveCriticalSection больше раз, чем enterCriticalSection для того же критического раздела. Если параметр 2 не равен нулю (это отрицательное целое число), структуры данных внутреннего средства проверки, вероятно, повреждены.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Критический адрес раздела.
  • Параметр 2  –  Количество критически важных разделов, принадлежащих текущему потоку.
  • Параметр 3  - Не используется
  • Параметр 4  - Не используется

Дополнительная информация
  • Тестовый уровень:  Замки
  • Идентификатор остановки:  THREAD_NOT_LOCK_OWNER
  • Код остановки:  200NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Использование критического раздела, который является частным для другой библиотеки DLL.

Вероятная причина

Эта остановка создается, если текущий поток пытается использовать частную блокировку, которая находится в другой библиотеке DLL. Например, a.dll пытается ввести критический раздел, определенный в ntdll.dll. Закрытые блокировки нельзя использовать в библиотеках DLL.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Критический адрес раздела.
  • Параметр 2  -  Не используется.
  • Параметр 3  - Не используется
  • Параметр 4  - Не используется

Дополнительная информация
  • Тестовый уровень:  Замки
  • Идентификатор остановки:  LOCK_PRIVATE
  • Код остановки:  200NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Блокировка SRW не инициализирована.

Вероятная причина

Эта остановка создается, если поток пытается использовать блокировку SRW (Param1), которая не инициализирована. $ kb — для получения текущей трассировки стека. Здесь используется блокировка SRW. Блокировка SRW должна быть инициализирована с помощью InitializeSRWLock, прежде чем ее можно будет использовать.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - SRW Lock
  • Параметр 2  - Не используется
  • Параметр 3  - Не используется
  • Параметр 4  - Не используется

Дополнительная информация
  • Тестовый уровень:  Srwlock
  • Идентификатор остановки:  NOT_INITIALIZED
  • Код остановки:  250NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Блокировка SRW уже инициализирована.

Вероятная причина

Эта остановка создается при повторной инициализации блокировки SRW (Param1). Если блокировка SRW активно используется другими потоками, повторная инициализация блокировки приведет к непредсказуемому поведению приложения, включая зависания и сбои. Трассировка стека инициализации может показать получение, если блокировка SRW была инициализирована статически. $ kb — для получения текущей трассировки стека. Здесь выполняется повторная инициализация блокировки SRW. $ dps Param3 — для получения трассировки стека инициализации блокировки SRW. Эта трассировка стека может показать получение, если блокировка была инициализирована статически.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - SRW Lock
  • Параметр 2  - ThreadId потока, который инициализировал блокировку SRW.
  • Параметр 3  - Адрес трассировки стека инициализации. Используйте адрес> dps<, чтобы узнать, где инициализирована блокировка SRW.
  • Параметр 4  - Не используется

Дополнительная информация
  • Тестовый уровень:  Srwlock
  • Идентификатор остановки:  ALREADY_INITIALIZED
  • Код остановки:  250NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Несовпадение Acquire-Release на блокировке SRW.

Вероятная причина

Эта остановка создается, если блокировка SRW (Param1) освобождается с неправильным API выпуска. Если блокировка SRW была получена для общего доступа и освобождается с помощью API монопольного выпуска или блокировка SRW была получена для монопольного доступа и освобождается с помощью API общего выпуска. Это может привести к непредсказуемому поведению приложения, включая зависания и сбои. $ kb — для получения текущей трассировки стека. Здесь блокировка SRW освобождается с помощью неправильного API. $ dps Param3 — чтобы получить блокировку SRW, получить трассировку стека.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - SRW Lock
  • Параметр 2  - ThreadId потока, который получил блокировку SRW.
  • Параметр 3  - Адрес трассировки стека получения. Используйте адрес> dps<, чтобы узнать, где была получена блокировка SRW.
  • Параметр 4  - Не используется

Дополнительная информация
  • Тестовый уровень:  Srwlock
  • Идентификатор остановки:  MISMATCHED_ACQUIRE_RELEASE
  • Код остановки:  250NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Блокировка SRW получается рекурсивно тем же потоком.

Вероятная причина

Эта остановка создается, если блокировка SRW (Param1) получается рекурсивно тем же потоком. Это приведет к взаимоблокировке, а поток будет блокироваться на неопределенный срок. Рекурсивное получение блокировки SRW в монопольном режиме приведет к взаимоблокировке. Рекурсивное получение блокировки SRW в общем режиме приведет к взаимоблокировке, когда поток ожидает монопольного доступа. Рассмотрим следующий пример: - Поток A получает блокировку SRW в общем режиме. Поток B пытается установить блокировку SRW в монопольном режиме и ожидает. Поток А пытается получить блокировку SRW в общем режиме рекурсивно. Это будет успешно до тех пор, пока нет эксклюзивного официанта (в данном случае B). Так как блокировки SRW не имеют нехватки модуля записи, поток A ожидает за потоком B. Теперь поток B ожидает потока A, который переключится в ожидании потока B, вызывая циклическое ожидание и, следовательно, взаимоблокировку. $ kb — для получения текущей трассировки стека. Здесь рекурсивно получается блокировка SRW. $ dps Param2 — для получения трассировки стека для первого приобретения.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - SRW Lock
  • Параметр 2  - Адрес первой трассировки стека получения. Используйте адрес> dps<, чтобы узнать, где была получена блокировка SRW.
  • Параметр 3  - Не используется
  • Параметр 4  - Не используется

Дополнительная информация
  • Тестовый уровень:  Srwlock
  • Идентификатор остановки:  RECURSIVE_ACQUIRE
  • Код остановки:  250NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Поток, который завершается или завершается, владеет блокировкой SRW.

Вероятная причина

Эта остановка создается, если поток (Param2), которому принадлежит блокировка SRW (Param1), выходит из нее или завершается. Это приведет к потерянной блокировке SRW, и потоки, пытающиеся получить эту блокировку, заблокируются на неопределенный срок. $ kb — для получения текущей трассировки стека. Это место, где поток завершается или завершается. $ dps Param3 — для получения трассировки стека блокировки SRW.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - SRW Lock
  • Параметр 2  - ThreadId потока, который завершает работу или завершается.
  • Параметр 3  Адрес  трассировки стека получения. Используйте адрес> dps<, чтобы узнать, где была получена блокировка SRW.
  • Параметр 4  - Не используется

Дополнительная информация
  • Тестовый уровень:  Srwlock
  • Идентификатор остановки:  EXIT_THREAD_OWNS_LOCK
  • Код остановки:  250NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Освобождаемая блокировка SRW не была получена этим потоком.

Вероятная причина

Эта остановка создается, если блокировка SRW (Param1) освобождается потоком (Param2), который не получил блокировку. Это представляет собой плохую практику программирования, которую трудно найти правильно и может привести к непредсказуемой работе приложения. $ kb — для получения текущей трассировки стека. Здесь поток освобождает блокировку SRW, которую он не получил. $ dps Param4 — для получения трассировки стека блокировки SRW.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - SRW Lock
  • Параметр 2  - Current ThreadId.
  • Параметр 3  - ThreadId потока, который получил блокировку SRW.
  • Параметр 4  Адрес  трассировки стека получения. Используйте адрес> dps<, чтобы узнать, где была получена блокировка SRW.

Дополнительная информация
  • Тестовый уровень:  Srwlock
  • Идентификатор остановки:  INVALID_OWNER
  • Код остановки:  250NAN
  • Тяжести:  Предупреждение
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Ни один
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Освобождаемая память содержит активную блокировку SRW.

Вероятная причина

Эта остановка создается, если освобождаемый адрес памяти (Param1) содержит активную блокировку SRW, которая все еще используется. Это может привести к непредсказуемой работе приложения, включая сбои и зависания. $ kb — для получения текущей трассировки стека. Здесь освобождается память, содержащая активную блокировку SRW. $ dps Param4 — для получения трассировки стека блокировки SRW.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - SRW Lock
  • Параметр 2  Адрес  освобождаемой памяти.
  • Параметр 3  - ThreadId потока, который получил блокировку SRW.
  • Параметр 4  Адрес  трассировки стека получения. Используйте адрес> dps<, чтобы узнать, где была получена блокировка SRW.

Дополнительная информация
  • Тестовый уровень:  Srwlock
  • Идентификатор остановки:  IN_FREED_MEMORY
  • Код остановки:  250NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Выгружаемая библиотека DLL содержит активную блокировку SRW.

Вероятная причина

Эта остановка создается, если выгружаемая библиотека DLL (Param2) содержит активную блокировку SRW (Param1), которая все еще используется. Это может привести к непредсказуемой работе приложения, включая сбои и зависания. $ kb — для получения текущей трассировки стека. Здесь выгружается библиотека DLL, содержащая активную блокировку SRW. $ du Param2 — для поиска имени выгружаемой библиотеки DLL. $ dps Param4 — для получения трассировки стека блокировки SRW.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - SRW Lock
  • Параметр 2  — Адрес имени выгружаемой библиотеки DLL. Используйте du <address> для просмотра имени.
  • Параметр 3  - ThreadId потока, который получил блокировку SRW.
  • Параметр 4  Адрес  трассировки стека получения. Используйте адрес> dps<, чтобы узнать, где была получена блокировка SRW.

Дополнительная информация
  • Тестовый уровень:  Srwlock
  • Идентификатор остановки:  IN_UNLOADED_DLL
  • Код остановки:  250NAN
  • Тяжести:  Предупреждение
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Ни один
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Недопустимое исключение дескриптора для текущей трассировки стека.

Вероятная причина

Эта остановка создается, если функция в верхней части стека передала недопустимый дескриптор системным подпрограммам. Обычно простая команда kb показывает, какое значение переданного дескриптора (это должен быть один из параметров, обычно первый). Если значение равно NULL, это явно неправильно. Если значение выглядит нормально, необходимо использовать расширение отладчика !htrace, чтобы получить журнал операций, относящихся к этому значению дескриптора. В большинстве случаев необходимо, чтобы значение дескриптора использовалось после закрытия.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Код исключения.
  • Параметр 2  - Запись исключения. Используйте .exr для его отображения.
  • Параметр 3  - Запись контекста. Используйте .cxr для его отображения.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Ручки
  • Идентификатор остановки:  INVALID_HANDLE
  • Код остановки:  300NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Недопустимый индекс TLS, используемый для трассировки текущего стека.

Вероятная причина

Эта остановка создается, если функция в верхней части стека передала недопустимый индекс TLS системным подпрограммам TLS. Обычно простая команда kb показывает, что не так. Типичная ошибка заключается в том, что вместо вызова TlsAlloc предполагается определенное значение для индекса TLS. Это может произойти, если вы всегда получаете значение N, поэтому нет необходимости вызывать TlsAlloc или чаще из-за неинициализированной переменной.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Недопустимый индекс TLS.
  • Параметр 2  -  Ожидаемая нижняя часть индекса.
  • Параметр 3  -  Не используется.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Ручки
  • Идентификатор остановки:  INVALID_TLS_VALUE
  • Код остановки:  300NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Недопустимые параметры для вызова WaitForMultipleObjects.

Вероятная причина

Эта остановка создается, если функция в верхней части стека называется WaitForMultipleObjects со значением NULL в качестве адреса массива дескрипторов для ожидания или с нулем в качестве числа дескрипторов. Простая команда kb покажет функцию, вызывающую этот API неправильно.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Адрес вектора дескрипторов объектов.
  • Параметр 2  -  Количество дескрипторов.
  • Параметр 3  -  Не используется.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Ручки
  • Идентификатор остановки:  INCORRECT_WAIT_CALL
  • Код остановки:  300NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Дескриптор NULL передается в качестве параметра. Необходимо использовать допустимый дескриптор.

Вероятная причина

Эта остановка создается, если функция в верхней части стека передала дескриптор NULL системным подпрограммам.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  -  Не используется.
  • Параметр 2  -  Не используется.
  • Параметр 3  -  Не используется.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Ручки
  • Идентификатор остановки:  NULL_HANDLE
  • Код остановки:  300NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Ожидание дескриптора потока в DllMain.

Вероятная причина

Эта остановка создается, если текущий поток выполняет код в функции DllMain одного из библиотек DLL, загруженных в текущий процесс, и вызывает WaitForSingleObject или WaitForMultipleObjects для ожидания дескриптора потока в том же процессе. Это, скорее всего, приведет к взаимоблокировке, так как дескриптор потока не получит сигнал, если этот второй поток не выйдет. Когда второй поток вызовет ExitThread, он попытается получить блокировку загрузчика DLL, а затем вызовет DllMain (DLL_THREAD_DETACH) для всех библиотек DLL в текущем процессе. Но блокировка загрузчика принадлежит первому потоку (который ожидает дескриптора потока), поэтому два потока будут взаимоблокироваться.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Дескриптор потока.
  • Параметр 2  -  Не используется.
  • Параметр 3  -  Не используется.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Ручки
  • Идентификатор остановки:  WAIT_IN_DLLMAIN
  • Код остановки:  300NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Неправильный тип объекта для дескриптора.

Вероятная причина

Эта остановка создается, если текущий поток вызывает API с дескриптором для объекта с неправильным типом объекта. Например, вызов SetEvent с дескриптором семафора в качестве параметра приведет к возникновению этой остановки. Для отладки этой остановки: $ КБ — для отображения текущей трассировки стека. Виновником, вероятно, является библиотека DLL, вызывающая verifier.dll; $ du parameter2 — для отображения фактического типа дескриптора. Значение дескриптора — parameter1. В приведенном выше примере отображается семафор. $ du parameter3 — для отображения типа объекта, ожидаемого API. В приведенном выше примере это имя будет: Event. Параметр $ !htrace1 может быть полезен, так как он будет отображать трассировку стека для последних операций открытия и закрытия этого дескриптора.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Обработать значение.
  • Параметр 2  - Имя типа объекта. Используйте du для отображения
  • Параметр 3  - Ожидаемое имя типа объекта. Используйте du для отображения
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Ручки
  • Идентификатор остановки:  INCORRECT_OBJECT_TYPE
  • Код остановки:  300NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Выгрузка библиотеки DLL, которая выделила индекс TLS, который не был освобожден.

Вероятная причина

Эта остановка создается, если библиотека DLL, которая выделила индекс TLS, выгружается перед освобождением этого индекса TLS. Для отладки этой остановки: $ du parameter3 — отображение имени библиотеки DLL-файла виновника; $ .reload xxx.dll=parameter4 — символы перезагрузки для виновной библиотеки DLL (при необходимости). xxx.dll — это имя библиотеки DLL, отображаемой на предыдущем шаге; $ u parameter2 — дезассемблировать код, который выделил TLS. Это должно указывать на функцию, которая выделила TLS, но забыла освободить его до выгрузки библиотеки DLL.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  Индекс - TLS
  • Параметр 2  - Адрес кода, который выделил этот индекс TLS.
  • Параметр 3  Адрес имени DLL . Используйте du для дампа.
  • Параметр 4  - DLL базовый адрес.

Дополнительная информация
  • Тестовый уровень:  TLS
  • Идентификатор остановки:  TLS_LEAK
  • Код остановки:  350NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Поврежденная структура TLS средства проверки.

Вероятная причина

Эта остановка создается, если внутренние структуры средства проверки, используемые для хранения состояния слотов TLS для потока, повреждены. Скорее всего, это связано с случайным повреждением процесса.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - TEB-адрес.
  • Параметр 2  - Ожидаемый адрес TEB.
  • Параметр 3  - Thread ID.
  • Параметр 4  - Ожидаемый идентификатор потока.

Дополнительная информация
  • Тестовый уровень:  TLS
  • Идентификатор остановки:  CORRUPTED_TLS
  • Код остановки:  350NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Использование недопустимого индекса TLS.

Вероятная причина

Эта остановка создается, если используется недопустимый индекс TLS. В большинстве случаев это связано с тем, что код по-прежнему использует этот индекс при вызове TlsFree. Ниже приведен пример потока пула потоков. T1: Dll загружается и TlsAlloc T1: Обратный вызов очереди T1: пропущенный ожидающий или отмененный обратный вызов T1: TlsFree T2: обратный вызов выполняется и вызывает TlsSetValue T1: Выгрузки Dll

Сведения, отображаемые проверятелем приложений
  • Параметр 1  Индекс - TLS
  • Параметр 2  - Не используется.
  • Параметр 3  - Не используется.
  • Параметр 4  - Не используется.

Дополнительная информация
  • Тестовый уровень:  TLS
  • Идентификатор остановки:  INVALID_TLS_INDEX
  • Код остановки:  350NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Освобождение блока виртуальной памяти с недопустимым размером или начальным адресом.

Вероятная причина

Эта остановка создается, если средство проверки приложений обнаруживает выгрузку VirtualFree или DLL с недопустимым начальным адресом или размером выделенной памяти. В случае выгрузки DLL это, вероятно, означает повреждение памяти в загруженном списке DLL. Чтобы отладить эту остановку, просмотрите текущую трассировку стека, адрес и размер памяти, которые будут освобождены, и попробуйте определить, почему они недопустимы.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  —  Базовый адрес выделения.
  • Параметр 2  - Размер области памяти.
  • Параметр 3  -  Не используется.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  INVALID_FREEMEM
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Неправильный вызов виртуального выделения.

Вероятная причина

Эта остановка создается, если средство проверки приложений обнаруживает вызов VirtualAlloc с недопустимым начальным адресом или размером выделенной памяти. Для отладки этой остановки просмотрите текущую трассировку стека (КБ), адрес и размер памяти, которые будут выделены, и попытайтесь определить, почему они недопустимы.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  -  Указатель на базовый адрес выделения.
  • Параметр 2  - Указатель на размер области памяти.
  • Параметр 3  - Не используется
  • Параметр 4  - Не используется

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  INVALID_ALLOCMEM
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Неправильный вызов представления карты.

Вероятная причина

Эта остановка создается, если средство проверки приложений обнаруживает вызов MapViewOfFile с недопустимым базовым адресом или размером сопоставления. Для отладки этой остановки просмотрите текущую трассировку стека (КБ), адрес и размер памяти, которые должны быть сопоставлены, и попытайтесь определить, почему они являются недопустимыми.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  —  Указатель на базовый адрес сопоставления.
  • Параметр 2  — Указатель на размер представления.
  • Параметр 3  - Не используется.
  • Параметр 4  - Не используется.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  INVALID_MAPVIEW
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Недопустимый адрес.

Вероятная причина

Эта остановка создается, если средство проверки приложений обнаруживает вызов IsBadXXXXPtr с недопустимым адресом (например, адресом в режиме ядра, а не обычным адресом в пользовательском режиме) для проверки буфера памяти. Для отладки этой остановки просмотрите текущую трассировку стека (КБ) и попытайтесь определить, почему вызывающий объект функции IsBadXXXPtr оказался с недопустимым адресом. Во многих случаях адрес является обычным фиктивным, например неинициализированным указателем. В библиотеке MSDN перечислены несколько причин, по которым приложения не должны использовать API IsBadXXXPtr: в среде с упреждающей многозадачностью некоторые другие потоки могут изменить доступ процесса к тестируемой памяти. Разыменовывание потенциально недопустимых указателей может отключить расширение стека в других потоках. Поток, исчерпающий свой стек, когда расширение стека отключено, приводит к немедленному завершению родительского процесса без всплывающего окна ошибок или диагностических сведений. Предполагается, что потоки в процессе будут взаимодействовать таким образом, чтобы один из них не освобождал память, необходимую другому. Использование этой функции не отменяет необходимость в этом. Если этого не сделать, приложение может завершиться непредсказуемым сбоем. По всем этим причинам рекомендуется никогда не использовать эти API.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - Начальный адрес.
  • Параметр 2  - Размер блока памяти.
  • Параметр 3  -  Недопустимый адрес.
  • Параметр 4  - Не используется.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  PROBE_INVALID_ADDRESS
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Зондирование свободной памяти.

Вероятная причина

Эта остановка создается, если средство проверки приложений обнаруживает вызов IsBadXXXXPtr для свободного выделения памяти. Это очень плохо, поскольку в некоторых других случаях эта память уже была повторно использована для другого выделения. Так как текущий путь к коду (КБ) не владеет этой памятью, это может привести к повреждению памяти другого пользователя с катастрофическими последствиями. Чтобы отладить эту остановку, просмотрите текущую трассировку стека (КБ) и попытайтесь определить, почему вызывающий объект функции IsBadXXXPtr оказался в состоянии проверки свободной памяти. Адрес может быть обычным фиктивным (например, неинициализированным указателем) или, возможно, уже освобожденной памятью. Если память уже была освобождена одним из API VirtualFree или UnmapViewOfFile, "!avrf -vs -a parameter3" выполнит поиск журнала трассировок стека путей кода, которые выделили или освободили этот адрес, и отобразит эти трассировки стека, если они доступны. Это может показать трассировку стека, которая освободила эту память. Чаще всего память — это уже освобожденное выделение кучи. Чтобы проверка для этой возможности, "!avrf -hp -a parameter3" будет искать журнал трассировок стека путей кода, которые выделили или освободили этот адрес из кучи или в кучу, и отобразит эти трассировки стека, если они доступны. В библиотеке MSDN перечислены несколько причин, по которым приложения не должны использовать API IsBadXXXPtr: в среде с упреждающей многозадачностью некоторые другие потоки могут изменить доступ процесса к тестируемой памяти. Разыменовывание потенциально недопустимых указателей может отключить расширение стека в других потоках. Поток, исчерпающий свой стек, когда расширение стека отключено, приводит к немедленному завершению родительского процесса без всплывающего окна ошибок или диагностических сведений. Предполагается, что потоки в процессе будут взаимодействовать таким образом, чтобы один из них не освобождал память, необходимую другому. Использование этой функции не отменяет необходимость в этом. Если этого не сделать, приложение может завершиться непредсказуемым сбоем. По всем этим причинам рекомендуется никогда не использовать эти API.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - Начальный адрес.
  • Параметр 2  - Размер блока памяти.
  • Параметр 3  - Адрес страницы свободной памяти.
  • Параметр 4  - Не используется.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  PROBE_FREE_MEM
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Проверка страницы охранника.

Вероятная причина

Эта остановка создается, если средство проверки приложений обнаруживает вызов IsBadXXXXPtr для выделения памяти, содержащего по крайней мере одну GUARD_PAGE. Это очень плохо, поскольку вполне возможно, что это GUARD_PAGE является концом текущего стека потока. Как описано в библиотеке MSDN: Разыменовывание потенциально недопустимых указателей может отключить расширение стека в других потоках. Поток, исчерпающий свой стек, когда расширение стека было отключено, приводит к немедленному завершению родительского процесса без всплывающих окон ошибок или диагностических сведений. Чтобы отладить эту остановку, просмотрите текущую трассировку стека (КБ) и попробуйте определить, почему вызывающий объект функции IsBadXXXPtr оказался в состоянии проверки GUARD_PAGE. Библиотека MSDN перечисляет несколько причин, по которым приложения не должны использовать API IsBadXXXPtr. В вытеснительной многозадачной среде другой поток может изменить доступ процесса к тестируемой памяти. Разыменовывание потенциально недопустимых указателей может отключить расширение стека в других потоках. Поток, исчерпающий свой стек, когда расширение стека было отключено, приводит к немедленному завершению родительского процесса без всплывающих окон ошибок или диагностических сведений. Ожидается, что потоки в процессе будут взаимодействовать таким образом, что один из них не будет освобождать память, необходимую другому. Использование этой функции не отменяет необходимость делать это. Если этого не сделать, приложение может завершиться непредсказуемым сбоем. По всем этим причинам мы рекомендуем никогда не использовать эти API.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Начальный адрес.
  • Параметр 2  - Размер блока памяти.
  • Параметр 3  - Адрес страницы guard.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  PROBE_GUARD_PAGE
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Проверив пустой адрес.

Вероятная причина

Эта остановка создается, если средство проверки приложений обнаруживает вызов IsBadXXXPtr с пустым адресом. Чтобы отладить эту остановку, просмотрите текущую трассировку стека (КБ) и попробуйте определить, почему вызывающий объект функции IsBadXXXPtr оказался с NULL-адресом. Обычно это означает, что кто-то не проверяет возвращаемое значение одной из функций выделения памяти. Например, приведенный ниже код является неправильным: int main (void) { PVOID p; p = malloc (1024); Использовать (p); возвращает 0; } void Use (PVOID p) { if (IsBadReadPtr (p)) { return; } // // p является безопасным для использования здесь. } Этот код следует переписать следующим образом: int main (void) { PVOID p; p = malloc (1024); if (NULL == p)) { return -1; } Использовать (p); возвращает 0; } void Use (PVOID p) { // // p является безопасным для использования здесь. } Библиотека MSDN перечисляет несколько причин, по которым приложения не должны использовать API IsBadXXXPtr. В вытеснительной многозадачной среде другой поток может изменить доступ процесса к тестируемой памяти. Разыменовывание потенциально недопустимых указателей может отключить расширение стека в других потоках. Поток, исчерпающий свой стек, когда расширение стека было отключено, приводит к немедленному завершению родительского процесса без всплывающих окон ошибок или диагностических сведений. Ожидается, что потоки в процессе будут взаимодействовать таким образом, что один из них не будет освобождать память, необходимую другому. Использование этой функции не отменяет необходимость делать это. Если этого не сделать, приложение может завершиться непредсказуемым сбоем. По всем этим причинам мы рекомендуем никогда не использовать эти API.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  -  Не используется.
  • Параметр 2  -  Не используется.
  • Параметр 3  -  Не используется.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  PROBE_NULL
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Блок памяти для зондирования с недопустимым начальным адресом или размером.

Вероятная причина

Эта остановка создается, если средство проверки приложений обнаруживает вызов IsBadXXXPtr с недопустимым начальным адресом (например, адресом режима ядра, а не обычным адресом в пользовательском режиме) или недопустимым размером буфера памяти для проверки. Для отладки этой остановки просмотрите текущую трассировку стека (КБ) и попробуйте определить, почему вызывающий объект функции IsBadXXXPtr оказался с недопустимым адресом или размером. Во многих случаях адрес или размер являются обычными фиктивными, например неинициализированные переменные. Библиотека MSDN перечисляет несколько причин, по которым приложения не должны использовать API IsBadXXXPtr. В вытеснительной многозадачной среде другой поток может изменить доступ процесса к тестируемой памяти. Разыменовывание потенциально недопустимых указателей может отключить расширение стека в других потоках. Поток, исчерпающий свой стек, когда расширение стека было отключено, приводит к немедленному завершению родительского процесса без всплывающих окон ошибок или диагностических сведений. Ожидается, что потоки в процессе будут взаимодействовать таким образом, что один из них не будет освобождать память, необходимую другому. Использование этой функции не отменяет необходимость делать это. Если этого не сделать, приложение может завершиться непредсказуемым сбоем. По всем этим причинам мы рекомендуем никогда не использовать эти API.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Начальный адрес.
  • Параметр 2  - Размер блока памяти.
  • Параметр 3  -  Не используется.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  PROBE_INVALID_START_OR_SIZE
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Выгрузка библиотеки DLL с недопустимым размером или начальным адресом.

Вероятная причина

Эта остановка создается, если средство проверки приложений обнаруживает выгрузку DLL с недопустимым начальным адресом или размером диапазона памяти DLL. Вероятно, это означает повреждение памяти во внутреннем ntdll.dll загруженном списке DLL.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  Базовый адрес памяти DLL .
  • Параметр 2  - DLL размер диапазона памяти.
  • Параметр 3  Адрес имени DLL . Используйте du для дампа.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  INVALID_DLL_RANGE
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Освобождение блока памяти в диапазоне адресов стека текущего потока.

Вероятная причина

Эта остановка создается, если средство проверки приложений обнаруживает VirtualFree для блока памяти, который фактически является частью стека текущего потока (!). Чтобы отладить эту остановку, просмотрите текущую трассировку стека (КБ) и попытайтесь понять, почему функция VirtualFree думала, что блок памяти был динамически выделен или сопоставлен, но на самом деле это была память, выделенная из стека.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  —  Базовый адрес выделения.
  • Параметр 2  - Размер области памяти.
  • Параметр 3  - Адрес с низким пределом стека.
  • Параметр 4  - Адрес с высоким пределом стека.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  FREE_THREAD_STACK_MEMORY
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Неправильный параметр FreeType для операции VirtualFree.

Вероятная причина

Эта остановка создается, если средство проверки приложений обнаруживает VirtualFree с неправильным значением параметра FreeType. Только два допустимых значения для этого параметра: MEM_DECOMMIT и MEM_RELEASE. При вызове VirtualFree с любым другим значением, кроме этих двух, VirtualFree не сможет освободить память. Чтобы отладить эту остановку, просмотрите текущую трассировку стека (кб): виновником, вероятно, является вызывающий объект VirtualFree.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Неправильное значение, используемое приложением.
  • Параметр 2  - Ожидаемое правильное значение 1.
  • Параметр 3  - Ожидается правильное значение 2.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  INVALID_FREE_TYPE
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Попытка освободить уже свободный блок виртуальной памяти.

Вероятная причина

Эта остановка создается, если средство проверки приложений обнаруживает VirtualFree для уже бесплатного адреса. Чтобы отладить эту остановку, просмотрите текущую трассировку стека (КБ) и попробуйте определить, почему память уже свободна, но приложение пытается освободить ее снова. "!avrf -vs -a parameter1" будет искать журнал трассировок стека путей кода, которые выделили или освободили этот адрес, и отображают эти трассировки стека, если они доступны. Это может показать трассировку стека, которая освободила эту память.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Адрес блока памяти.
  • Параметр 2  -  Не используется.
  • Параметр 3  -  Не используется.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  MEM_ALREADY_FREE
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Неправильный параметр Size для операции VirtualFree (MEM_RELEASE).

Вероятная причина

Эта остановка создается, если средство проверки приложений обнаруживает VirtualFree (MEM_RELEASE) с ненулевым значением параметра dwSize. При использовании MEM_RELEASE значение этого параметра равно 0. При вызове VirtualFree с любым другим значением, кроме 0, VirtualFree не сможет освободить память. Чтобы отладить эту остановку, просмотрите текущую трассировку стека (кб): виновником, вероятно, является вызывающий объект VirtualFree.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Неправильный размер, используемый приложением.
  • Параметр 2  - Ожидаемый правильный размер (0).
  • Параметр 3  -  Не используется.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  INVALID_FREE_SIZE
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

В подпрограмме точки входа DLL возникает непредвиденное исключение.

Вероятная причина

Эта остановка создается, если функция точки входа DLL (DllMain) вызывает исключение. Например, если dllMain(DLL_PROCESS_ATTACH) вызывает исключение, загрузчик DLL Windows: - Перехват и скрытие исключения; — выгрузка библиотеки DLL без вызова ее DllMain(DLL_PROCESS_DETACH). Поэтому во многих случаях библиотека DLL уже выделила некоторые ресурсы, а затем вызвала исключение, и у нее не будет возможности освободить эти ресурсы в DllMain (DLL_PROCESS_DETACH). Для отладки этой остановки: $ du parameter1 — для отображения имени библиотеки DLL; $ .exr parameter2 — для отображения сведений об исключении; $ .cxr parameter3, за которым следует kb, — для отображения сведений контекста исключения и трассировки стека за время возникновения исключения; $ parameter4 — это адрес внутренней структуры средства проверки и не имеет никакого значения для большинства пользователей средства проверки.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - DLL-имя (используйте du для дампа).
  • Параметр 2  - Запись исключения. Используйте .exr для его отображения.
  • Параметр 3  - Запись контекста. Используйте .cxr для его отображения.
  • Параметр 4  Дескриптор dll средства  проверки

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  DLL_UNEXPECTED_EXCEPTION
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

В функции потока возникло непредвиденное исключение.

Вероятная причина

Эта остановка создается, если функция потока вызывает исключение. Это плохо, потому что весь процесс будет убит. Для отладки этой остановки: $ parameter1 может иметь значение для типа исключения. Например, код исключения C0000005 означает нарушение доступа; $ .exr parameter2 — для отображения сведений об исключении; $ .cxr parameter3 и kb — для отображения контекстных сведений об исключении;

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - Код исключения.
  • Параметр 2  - Запись исключения. Используйте .exr для его отображения.
  • Параметр 3  - Запись контекста. Используйте .cxr для его отображения.
  • Параметр 4  - Не используется.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  THREAD_UNEXPECTED_EXCEPTION
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

При зондировании памяти возникло непредвиденное исключение.

Вероятная причина

Эта остановка создается, если мы получаем исключение во время вызова IsBadXXXXPtr. Это означает, что буфер памяти, который мы прорабаем, фактически не имеет защиты, принятой вызывающим объектом, или что память уже освобождена и т. д. Дополнительные примеры использования API IsBadXXXPtr не рекомендуется использовать в описании выше других кодов остановки (PROBE_INVALID_ADDRESS, PROBE_FREE_MEM, PROBE_GUARD_PAGE, PROBE_NULL PROBE_INVALID_START_OR_SIZE). Для отладки этой остановки: $ parameter1 обычно будет иметь значение C0000005, что означает нарушение доступа; $ .exr parameter2 — для отображения сведений об исключении; $ .cxr parameter3 и kb — для отображения контекстных сведений об исключении и трассировки стека во время возникновения исключения;

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - Код исключения.
  • Параметр 2  - Запись исключения. Используйте .exr для его отображения.
  • Параметр 3  - Запись контекста. Используйте .cxr для его отображения.
  • Параметр 4  - Не используется

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  PROBE_UNEXPECTED_EXCEPTION
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Попытка сбросить пустой адрес.

Вероятная причина

Эта остановка создается, если средство проверки приложений обнаруживает вызов VirtualFree (MEM_RESET) с первым параметром NULL. MEM_RESET следует использовать только для уже выделенной памяти, поэтому ЗНАЧЕНИЕ NULL в данном случае не является допустимым первым параметром.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - Не используется.
  • Параметр 2  - Не используется.
  • Параметр 3  - Не используется.
  • Параметр 4  - Не используется.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  INVALID_MEM_RESET
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Освобождение блока памяти кучи в диапазоне адресов стека текущего потока.

Вероятная причина

Эта остановка создается, если средство проверки приложений обнаруживает HeapFree для блока памяти, который фактически является частью стека текущего потока (!). Для отладки этой остановки просмотрите текущую трассировку стека (КБ) и попытайтесь понять, почему функция, вызывающая HeapFree, думала, что блок памяти был динамически выделен или сопоставлен, но на самом деле это была память, выделенная из стека.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  -  Базовый адрес выделения.
  • Параметр 2  - Размер области памяти.
  • Параметр 3  - Адрес с низким пределом в стеке.
  • Параметр 4  - Адрес с высоким пределом стека.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  FREE_THREAD_STACK_MEMORY_AS_HEAP
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Распакуется область памяти в диапазоне адресов стека текущего потока.

Вероятная причина

Эта остановка создается, если средство проверки приложений обнаруживает UnmapViewOfFile для блока памяти, который фактически является частью стека текущего потока (!). Для отладки этой остановки просмотрите текущую трассировку стека (КБ) и попытайтесь понять, почему функция, которая вызвала unmapViewOfFile, думала, что блок памяти был динамически выделен или сопоставлен, но на самом деле это была память, выделенная из стека.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  -  Базовый адрес выделения.
  • Параметр 2  - Размер области памяти.
  • Параметр 3  - Адрес с низким пределом в стеке.
  • Параметр 4  - Адрес с высоким пределом стека.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  FREE_THREAD_STACK_MEMORY_AS_MAP
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Неправильный адрес RTL_RESOURCE.

Вероятная причина

Эта остановка создается, если приложение пытается использовать значение NULL или другой неправильный адрес (например, адрес режима ядра) в качестве адреса допустимого объекта. RtlInitializeResource (NULL) — это неправильный вызов API, который активирует такую остановку средства проверки. param1 — это неправильный адрес, и виновник находится в трассировке стека (отобразите его в кб).

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - Адрес.
  • Параметр 2  - Не используется.
  • Параметр 3  - Не используется.
  • Параметр 4  - Не используется.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  INVALID_RESOURCE_ADDRESS
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Недопустимый адрес критического раздела.

Вероятная причина

Эта остановка создается, если приложение пытается использовать значение NULL или другой неправильный адрес (например, адрес режима ядра) в качестве адреса допустимого объекта. EnterCriticalSection(NULL) — это неправильный вызов API, который активирует такую остановку средства проверки. param1 — это неправильный адрес, и виновник находится в трассировке стека (отобразите его в кб).

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - Адрес.
  • Параметр 2  - Не используется.
  • Параметр 3  - Не используется.
  • Параметр 4  - Не используется.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  INVALID_CRITSECT_ADDRESS
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Попытка выполнения кода в неисполняемой памяти.

Вероятная причина

Эта остановка создается, если приложение пытается выполнить код с адреса, который не является исполняемым или бесплатным. Для отладки этой остановки: $ u parameter2 — для отмены сборки виновного кода $ .exr parameter3 — для отображения сведений об исключении; $ .cxr parameter4 и kb — для отображения контекстных сведений об исключении и трассировки стека за время возникновения исключения.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  —  адрес, к которой осуществляется доступ.
  • Параметр 2  —  Код, выполняющий недопустимый доступ.
  • Параметр 3  - Запись исключения. Используйте .exr для его отображения.
  • Параметр 4  - Запись контекста. Используйте .cxr для его отображения.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  THREAD_UNEXPECTED_EXCEPTION_CODE
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

При инициализации выходного буфера возникает непредвиденное исключение.

Вероятная причина

Эта остановка создается, если мы получаем исключение при инициализации буфера, указанного в качестве выходного параметра для API Win32 или CRT. Обычно это означает, что указанный размер выходного буфера неверен. Для отладки этой остановки: $ .exr parameter3 — для отображения сведений об исключении; $ .cxr parameter4 и kb — для отображения контекстных сведений об исключении и трассировки стека в момент возникновения исключения.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - Адрес начала буфера.
  • Параметр 2  - Размер буфера.
  • Параметр 3  - Запись исключения. Используйте .exr для его отображения.
  • Параметр 4  - Запись контекста. Используйте .cxr для его отображения.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  OUTBUFF_UNEXPECTED_EXCEPTION
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Непредвиденное исключение при попытке найти размер блока кучи.

Вероятная причина

Эта остановка создается, если мы получаем исключение при вызове HeapSize для освобождаемого блока кучи. Обычно это означает, что указанный адрес блока кучи неверен или куча повреждена. Для отладки этой остановки: $ .exr parameter3 — для отображения записи исключения; $ .cxr parameter4 и kb — для отображения контекстных сведений об исключении и трассировки стека в момент возникновения исключения.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  —  Адрес освобождаемого блока кучи.
  • Параметр 2  - Дескриптор кучи.
  • Параметр 3  - Запись исключения. Используйте .exr для его отображения.
  • Параметр 4  - Запись контекста. Используйте .cxr для его отображения.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  SIZE_HEAP_UNEXPECTED_EXCEPTION
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Освобождение блока памяти с недопустимым начальным адресом.

Вероятная причина

Эта остановка создается, если программа вызывает VirtualFree (MEM_RELEASE) с параметром lpAddress, который не является базовым адресом, возвращенным функцией VirtualAlloc или VirtualAllocEx, когда область страниц была зарезервирована; Для отладки этой остановки: $ KB — для отображения текущей трассировки стека, которая вызывает VirtualFree. Вероятным виновником является библиотека DLL, которая вызывает VirtualFree.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  Адрес  освобождаемого блока памяти.
  • Параметр 2  -  Ожидается правильный адрес блока памяти.
  • Параметр 3  - Не используется.
  • Параметр 4  - Не используется.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  INVALID_FREEMEM_START_ADDRESS
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Распакуйте блок памяти с недопустимым начальным адресом.

Вероятная причина

Эта остановка создается, если программа вызывает UnmapViewOfFile с параметром lpBaseAddress, который не совпадает со значением, возвращенным предыдущим вызовом функции MapViewOfFile или MapViewOfFileEx. Для отладки этой остановки: $ kb — для отображения текущей трассировки стека, которая вызывает UnmapViewOfFile. Вероятным виновником является библиотека DLL, которая вызывает UnmapViewOfFile.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  —  адрес несопоставленного блока памяти.
  • Параметр 2  -  Ожидается правильный адрес блока памяти.
  • Параметр 3  - Не используется.
  • Параметр 4  - Не используется.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  INVALID_UNMAPVIEW_START_ADDRESS
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

непредвиденное исключение, вызванное функцией обратного вызова threadpool.

Вероятная причина

Эта остановка создается, если функция обратного вызова в потоке threadpool вызывает исключение. Для отладки этой остановки: $ parameter1 может иметь значение для типа исключения. Например, код исключения C0000005 означает нарушение доступа. $ .exr parameter2 — для отображения сведений об исключении. $ .cxr parameter3 и kb — для отображения сведений контекста исключения.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - Код исключения
  • Параметр 2  - Запись исключения. Используйте .exr для его отображения
  • Параметр 3  - Запись контекста. Используйте .cxr для его отображения
  • Параметр 4  - Не используется

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  THREADPOOL_UNEXPECTED_EXCEPTION
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

код в неисполняемой памяти

Вероятная причина

Эта остановка создается, если приложение пытается выполнить код с адреса, который не является исполняемым или бесплатным. Для отладки этой остановки: $ u parameter2 — для отмены сборки кода виновного $ .exr parameter3 — для отображения сведений об исключении $ .cxr parameter4 и кб — для отображения контекстных сведений об исключении и трассировки стека за время возникновения исключения.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - Адрес, к которой осуществляется доступ
  • Параметр 2  - Код, выполняющий недопустимый доступ
  • Параметр 3  - Запись исключения. Используйте .exr для его отображения.
  • Параметр 4  - Запись контекста. Используйте .cxr для его отображения.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  THREADPOOL_UNEXPECTED_EXCEPTION_CODE
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Создание исполняемой кучи.

Вероятная причина

Эта остановка создается, если приложение создает исполняемую кучу. Это может привести к нарушению безопасности.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - Не используется.
  • Параметр 2  - Не используется.
  • Параметр 3  - Не используется.
  • Параметр 4  - Не используется.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  EXECUTABLE_HEAP
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Выделение памяти исполняемого файла.

Вероятная причина

Эта остановка создается, если приложение выделяет исполняемую память. Это может привести к нарушению безопасности.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  -  Защита страницы, заданная вызывающим объектом.
  • Параметр 2  - Не используется.
  • Параметр 3  - Не используется.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  Памяти
  • Идентификатор остановки:  EXECUTABLE_MEMORY
  • Код остановки:  600NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Попытка выполнения кода в неисполняемой памяти (первый шанс).

Вероятная причина

Эта остановка создается, если приложение пытается выполнить код с адреса, который не является исполняемым или бесплатным. Для отладки этой остановки: $ u parameter2 — для отмены сборки кода виновного $ .exr parameter3 — для отображения сведений об исключении; $ .cxr parameter4 и kb — для отображения контекстных сведений об исключении и трассировки стека за время создания исключения.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Адрес, к которой осуществляется доступ.
  • Параметр 2  —  Код, выполняющий недопустимый доступ.
  • Параметр 3  - Запись исключения. Используйте .exr для его отображения.
  • Параметр 4  - Запись контекста. Используйте .cxr для его отображения.

Дополнительная информация
  • Тестовый уровень:  Исключения
  • Идентификатор остановки:  FIRST_CHANCE_ACCESS_VIOLATION_CODE
  • Код остановки:  650NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Приоритет этого потока пула потоков изменен.

Вероятная причина

Эта остановка создается при изменении приоритета потока при возвращении в пул потоков.

Сведения, отображаемые проверятелем приложений
  • Формат:  —  поток threadpool (%x), выполнив обратный вызов (%p), имеет измененный приоритет потока (%i —> %i).
  • Параметр 1  Функция  обратного вызова.
  • Параметр 2  - Context.
  • Параметр 3  Трассировка  стека выделения объектов Threadpool, используйте dps для дампа.
  • Параметр 4  - Текущий приоритет.

Дополнительная информация
  • Тестовый уровень:  Threadpool
  • Идентификатор остановки:  INCONSISTENT_PRIORITY
  • Код остановки:  700NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Сходство этого потока пула потоков было изменено.

Вероятная причина

Эта остановка создается при изменении сходства потоков при возвращении в пул потоков.

Сведения, отображаемые проверятелем приложений
  • Формат:  Поток - threadpool (%x), выполнив обратный вызов (%p), имеет измененную маску сходства потоков (%p -> %p)
  • Параметр 1  Функция  обратного вызова.
  • Параметр 2  - Context.
  • Параметр 3  Трассировка  стека выделения объектов Threadpool, используйте dps для дампа.
  • Параметр 4  - Текущее сходство.

Дополнительная информация
  • Тестовый уровень:  Threadpool
  • Идентификатор остановки:  INCONSISTENT_AFFINITY_MASK
  • Код остановки:  700NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Необработанные msg в пуле msg текущего потока.

Вероятная причина

Эта остановка создается, если какое-либо сообщение остается без обработки при возвращении этого потока пула потоков в пул. Это опасно, так как оно будет обрабатываться в совершенно другом контексте. Используйте !avrf -tp <Param4> для просмотра сообщений, опубликованных в этом потоке.

Сведения, отображаемые проверятелем приложений
  • Формат:  Поток - threadpool (%x), выполнив обратный вызов (%p), имеет неоплаченное сообщение окна (%x: %x)
  • Параметр 1  Функция  обратного вызова.
  • Параметр 2  - Context.
  • Параметр 3  Трассировка  стека выделения объектов Threadpool, используйте dps для дампа.
  • Параметр 4  - Threadpool thread id. Используйте !avrf -tp <threadid> , чтобы просмотреть сообщения, опубликованные в этом потоке.

Дополнительная информация
  • Тестовый уровень:  Threadpool
  • Идентификатор остановки:  ORPHANED_THREAD_MESSAGE
  • Код остановки:  700NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Незакрытое окно принадлежало текущему потоку.

Вероятная причина

Эта остановка создается, если какое-либо окно сохраняется в активном режиме, когда поток пула потоков возвращается в пул.

Сведения, отображаемые проверятелем приложений
  • Формат:  —  поток threadpool (%x), выполнив обратный вызов (%p), имеет допустимый hwnd (%x: %s), который может получать сообщения
  • Параметр 1  Функция  обратного вызова.
  • Параметр 2  - Context.
  • Параметр 3  Трассировка  стека выделения объектов Threadpool, используйте dps для дампа.
  • Параметр 4  - Threadpool thread id.

Дополнительная информация
  • Тестовый уровень:  Threadpool
  • Идентификатор остановки:  ORPHANED_THREAD_WINDOW
  • Код остановки:  700NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

ExitThread() в потоке пула потоков.

Вероятная причина

Эта остановка создается при вызове ExitThread в потоке пула потоков. Это запрещено, так как это сделает систему нестабильной. Это приведет к утечке ресурсов, заморозке или av.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  Функция  обратного вызова.
  • Параметр 2  - Context.
  • Параметр 3  Трассировка  стека выделения объектов Threadpool, используйте dps для дампа.
  • Параметр 4  - Не используется.

Дополнительная информация
  • Тестовый уровень:  Threadpool
  • Идентификатор остановки:  ILLEGAL_THREAD_EXIT
  • Код остановки:  700NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Поток находится в состоянии олицетворения при возвращении в поток пула потоков.

Вероятная причина

Эта остановка создается, если функция обратного вызова изменяет маркер потока для олицетворения другого пользователя и забыла сбросить его перед возвратом обратно в пул потоков.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  Функция  обратного вызова.
  • Параметр 2  - Context.
  • Параметр 3  Трассировка  стека выделения объектов Threadpool, используйте dps для дампа.
  • Параметр 4  - Не используется.

Дополнительная информация
  • Тестовый уровень:  Threadpool
  • Идентификатор остановки:  THREAD_IN_IMPERSONATION
  • Код остановки:  700NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Вызывается функция, требующая постоянного потока.

Вероятная причина

Некоторые API Microsoft Windows необходимо вызывать в выделенном или постоянном потоке. В пуле потоков обычно следует избегать использования локального хранилища потока и асинхронных вызовов очередей, для которых требуется постоянный поток, например функция RegNotifyChangeKeyValue. Однако такие функции можно поместить в очередь в постоянный рабочий поток с помощью QueueUserWorkItem с параметром WT_EXECUTEINPERSISTENTTHREAD. База знаний в отладчике отобразит вызывающий объект.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  Функция  обратного вызова.
  • Параметр 2  - Context.
  • Параметр 3  Трассировка  стека выделения объектов Threadpool, используйте dps для дампа.
  • Параметр 4  - Не используется.

Дополнительная информация
  • Тестовый уровень:  Threadpool
  • Идентификатор остановки:  PERSISTED_THREAD_NEEDED
  • Код остановки:  700NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Поток находится в состоянии грязное транзакции.

Вероятная причина

Эта остановка создается, если функция обратного вызова забыла закрыть или сбросить текущий дескриптор транзакции.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  Функция  обратного вызова.
  • Параметр 2  - Context.
  • Параметр 3  Трассировка  стека выделения объектов Threadpool, используйте dps для дампа.
  • Параметр 4  -  Дескриптор транзакции.

Дополнительная информация
  • Тестовый уровень:  Threadpool
  • Идентификатор остановки:  DIRTY_TRANSACTION_CONTEXT
  • Код остановки:  700NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Это состояние пула потоков имеет несбалансированные вызовы CoInit и CoUnInit.

Вероятная причина

Эта остановка создается, если функция обратного вызова вызывает Несбалансированные coInit и CoUnInit.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  Функция  обратного вызова.
  • Параметр 2  - Context.
  • Параметр 3  Трассировка  стека выделения объектов Threadpool, используйте dps для дампа.
  • Параметр 4  - Сбалансированные счетчики вызовов.

Дополнительная информация
  • Тестовый уровень:  Threadpool
  • Идентификатор остановки:  DIRTY_COM_STATE
  • Код остановки:  700NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Параметры для объекта таймера несогласованны. Точка должна иметь значение 0, если при создании таймера указан WT_EXECUTEONLYONCE

Вероятная причина

Эта остановка создается, если период для сигнала таймера не равен нулю, когда таймер настроен на сигнал только один раз с флагом WT_EXECUTEONLYONCE

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Указан период.
  • Параметр 2  Параметр - Flags указан.
  • Параметр 3  - Не используется.
  • Параметр 4  - Не используется.

Дополнительная информация
  • Тестовый уровень:  Threadpool
  • Идентификатор остановки:  INCONSISTENT_TIMER_PARAMS
  • Код остановки:  700NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Блокировка загрузчика удерживается потоком пула потоков в обратном вызове.

Вероятная причина

Эта остановка создается, если блокировка загрузчика удерживается в рамках обратного вызова и не освобождается при возвращении потока в пул потоков.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - Функция обратного вызова.
  • Параметр 2  - Context.
  • Параметр 3  Трассировка  стека выделения объектов Threadpool, используйте dps для дампа.
  • Параметр 4  - Не используется.

Дополнительная информация
  • Тестовый уровень:  Threadpool
  • Идентификатор остановки:  LOADER_LOCK_HELD
  • Код остановки:  700NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Предпочтительный язык задается потоком пула потоков в обратном вызове.

Вероятная причина

Эта остановка создается, если предпочтительный язык задан в обратном вызове и не очищается при возвращении потока в пул потоков.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - Функция обратного вызова.
  • Параметр 2  - Context.
  • Параметр 3  Трассировка  стека выделения объектов Threadpool, используйте dps для дампа.
  • Параметр 4  - Не используется.

Дополнительная информация
  • Тестовый уровень:  Threadpool
  • Идентификатор остановки:  PREFERRED_LANGUAGES_SET
  • Код остановки:  700NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Приоритет фона задается потоком пула потоков в обратном вызове.

Вероятная причина

Эта остановка создается, если приоритет фона задан в обратном вызове и не отключается при возвращении потока в пул потоков.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - Функция обратного вызова.
  • Параметр 2  - Context.
  • Параметр 3  Трассировка  стека выделения объектов Threadpool, используйте dps для дампа.
  • Параметр 4  - Не используется.

Дополнительная информация
  • Тестовый уровень:  Threadpool
  • Идентификатор остановки:  BACKGROUND_PRIORITY_SET
  • Код остановки:  700NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

TerminateThread() в потоке пула потоков.

Вероятная причина

Эта остановка создается при вызове TerminateThread в потоке пула потоков. Это запрещено, так как это сделает систему нестабильной. Это приведет к утечке ресурсов, заморозке или av.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - Не используется.
  • Параметр 2  - Не используется.
  • Параметр 3  - Не используется.
  • Параметр 4  - Не используется.

Дополнительная информация
  • Тестовый уровень:  Threadpool
  • Идентификатор остановки:  ILLEGAL_THREAD_TERMINATION
  • Код остановки:  700NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Стек был раскручен, когда ожидается асинхронная операция ввода-вывода.

Вероятная причина

Эта остановка создается, если приложение выполнило операцию ввода-вывода, которая использует переменную стека и не ждала завершения ввода-вывода, что приводит к повреждению стека. Для отладки этой остановки: $ dps parameter4 для отображения трассировки стека при выдаче ввода-вывода. Параметр1 указывает адрес на основе стека, а параметр 3 — поток, выдавающий ввод-вывод.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  -Адрес переменной стека, используемой в вводе-выводе .
  • Параметр 2  - Текущий указатель стека.
  • Параметр 3  — исходный поток, выдавающий ввод-вывод .
  • Параметр 4  Трассировка стека при выдаче ввода-вывода .

Дополнительная информация
  • Тестовый уровень:  IO
  • Идентификатор остановки:  ASYNCIO_STACK_UNWIND
  • Код остановки:  800NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

При ожидании асинхронной операции ввода-вывода стек был поврежден.

Вероятная причина

Эта остановка создается, если приложение выполнило операцию ввода-вывода, которая использует переменную стека и не ждала завершения ввода-вывода, что приводит к повреждению стека. Для отладки этой остановки: $ dps parameter4 для отображения трассировки стека при выдаче ввода-вывода. Parameter1 указывает адрес на основе стека, а параметр 3 — поток, выдавающий ввод-вывод.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  -Адрес переменной стека, используемой в вводе-выводе .
  • Параметр 2  - Текущий указатель стека.
  • Параметр 3  —  исходный поток, выдавающий ввод-вывод.
  • Параметр 4  -Трассировка стека при выдаче ввода-вывода .

Дополнительная информация
  • Тестовый уровень:  IO
  • Идентификатор остановки:  ASYNCIO_CORRUPTED_STACK
  • Код остановки:  800NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Использование освобожденного адреса в ожидающей операции ввода-вывода.

Вероятная причина

Эта остановка создается, если приложение выполнило операцию ввода-вывода и освободило память, используемую в операции ввода-вывода, до завершения ввода-вывода, что приводит к повреждению памяти и т. д. Для отладки этой остановки: $ dps parameter4 для отображения трассировки стека при выдаче ввода-вывода. Parameter1 указывает адрес, используемый в вводе-выводе. Параметр2 указывает на освобождаемый адрес, а параметр 3 — поток, выдавающий ввод-вывод.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Адрес, используемый в вводе-выводе.
  • Параметр 2  -  Освобождается адрес.
  • Параметр 3  —  исходный поток, выдавающий ввод-вывод.
  • Параметр 4  -Трассировка стека при выдаче ввода-вывода .

Дополнительная информация
  • Тестовый уровень:  IO
  • Идентификатор остановки:  FREED_ADDRESS_IN_PENDINGIO
  • Код остановки:  800NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Блок состояния ввода-вывода (OVERLAPPED) используется повторно, пока связанный запрос ввода-вывода по-прежнему находится в состоянии ожидания.

Вероятная причина

Эта остановка создается, если приложение повторно использовало блок состояния ввода-вывода (OVERLAPPED), а запрос ввода-вывода, использующий этот блок состояния ввода-вывода (OVERLAPPED), по-прежнему находится в состоянии ожидания. Отладка этой остановки: $ dps parameter3 для отображения трассировки стека при выдаче исходного ввода-вывода. Parameter1 указывает адрес, используемый в потоке ввода-вывода, а параметр2 — потоке, выдававшего ввод-вывод.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  -Адрес блока состояния ввода-вывода  (OVERLAPPED).
  • Параметр 2  —  исходный поток, выдавающий ввод-вывод.
  • Параметр 3  -Трассировка стека при выдаче ввода-вывода .
  • Параметр 4  - Не используется.

Дополнительная информация
  • Тестовый уровень:  IO
  • Идентификатор остановки:  REUSED_IOSTATUS_BLOCK
  • Код остановки:  800NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Использование неподдерживаемого флага FILE_ATTRIBUTE_NOT_CONTENT_INDEXED в CreateFile

Вероятная причина

Старая версия MSDN ошибочно задокументировал CreateFile как поддержку FILE_ATTRIBUTE_NOT_CONTENT_INDEXED. Если этот флаг предназначен, его следует задать с помощью других функций API, таких как SetFileAttributes. $ ln Parameter1 для поиска вызывающего объекта CreateFile.

Сведения, отображаемые проверятелем приложений
  • Формат:  -  CreateFile при записи %hs%ws с флагами %08x %08x %08x
  • Параметр 1  - Обратный адрес.
  • Параметр 2  -  Не используется.
  • Параметр 3  -  Не используется.
  • Параметр 4  -  Не используется.

Дополнительная информация
  • Тестовый уровень:  IO
  • Идентификатор остановки:  USING_BAD_CREATEFILE_FLAG
  • Код остановки:  800NAN
  • Тяжести:  Предупреждение
  • Однократная ошибка: 
  • Отчет об ошибках:  Ни один
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Произошла утечка выделения кучи.

Вероятная причина

Эта остановка создается, если библиотека DLL владельца выделения была динамически выгружена во время владения ресурсами.

Сведения, отображаемые проверятелем приложений
  • Параметр 1  - Адрес утечки выделения. Выполните команду !heap -p -a <address> , чтобы получить дополнительные сведения о выделении.
  • Параметр 2  - Адрес трассировки стека выделения. Выполните команду dps <address> , чтобы просмотреть стек выделения.
  • Параметр 3  - Адрес имени библиотеки DLL владельца. Выполните команду du <address> , чтобы прочитать имя библиотеки DLL.
  • Параметр 4  -  База библиотеки DLL владельца. Выполните команду .reload <dll_name> = <address> , чтобы перезагрузить библиотеку DLL владельца. Используйте "lm", чтобы получить дополнительные сведения о загруженных и выгруженных модулях.

Дополнительная информация
  • Тестовый уровень:  Утечки
  • Идентификатор остановки:  РАСПРЕДЕЛЕНИЯ
  • Код остановки:  900NAN
  • Тяжести:  Ошибка
  • Однократная ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создайте обратную трассировку:  Да

Произошла утечка HANDLE.

Вероятная причина

Эта остановка создается, если библиотека dll владельца дескриптора была динамически выгружена во время владения ресурсами. Для отладки этой остановки выполните команду !htrace parameter1, чтобы получить дополнительные сведения о дескрипторе.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - Значение дескриптора утечки. Запустите дескриптор> !htrace<, чтобы получить дополнительные сведения о дескрипторе, если трассировка дескрипторов включена.
  • Параметр 2  —  адрес трассировки стека выделения. Запустите адрес> dps<, чтобы просмотреть стек выделения.
  • Параметр 3  - Адрес имени библиотеки DLL владельца. Выполните команду du <address> , чтобы прочитать имя библиотеки DLL.
  • Параметр 4  -  База библиотеки DLL владельца. Выполните команду .reload <dll_name> = <address> , чтобы перезагрузить библиотеку DLL владельца. Используйте "lm", чтобы получить дополнительные сведения о загруженных и выгруженных модулях.

Дополнительная информация
  • Тестовый уровень:  Утечки
  • Идентификатор остановки:  ОБРАБАТЫВАТЬ
  • Код остановки:  900NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Произошла утечка HKEY.

Вероятная причина

Эта остановка создается, если библиотека dll владельца раздела реестра была динамически выгружена во время владения ресурсами.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - Значение утечки HKEY.
  • Параметр 2  —  адрес трассировки стека выделения. Запустите адрес> dps<, чтобы просмотреть стек выделения.
  • Параметр 3  - Адрес имени библиотеки DLL владельца. Выполните команду du <address> , чтобы прочитать имя библиотеки DLL.
  • Параметр 4  -  База библиотеки DLL владельца. Выполните команду .reload <dll_name> = <address> , чтобы перезагрузить библиотеку DLL владельца. Используйте "lm", чтобы получить дополнительные сведения о загруженных и выгруженных модулях.

Дополнительная информация
  • Тестовый уровень:  Утечки
  • Идентификатор остановки:  РЕЕСТРА
  • Код остановки:  900NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Произошла утечка виртуального резервирования.

Вероятная причина

Эта остановка создается, если библиотека dll владельца виртуального резервирования была динамически выгружена во время владения ресурсами.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - Утечка адреса резервирования.
  • Параметр 2  —  адрес трассировки стека выделения. Запустите адрес> dps<, чтобы просмотреть стек выделения.
  • Параметр 3  - Адрес имени библиотеки DLL владельца. Выполните команду du <address> , чтобы прочитать имя библиотеки DLL.
  • Параметр 4  -  База библиотеки DLL владельца. Выполните команду .reload <dll_name> = <address> , чтобы перезагрузить библиотеку DLL владельца. Используйте "lm", чтобы получить дополнительные сведения о загруженных и выгруженных модулях.

Дополнительная информация
  • Тестовый уровень:  Утечки
  • Идентификатор остановки:  VIRTUAL_RESERVATION
  • Код остановки:  900NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Произошла утечка BSTR.

Вероятная причина

Эта остановка создается, если библиотека dll владельца SysString была динамически выгружена во время владения ресурсами.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - Адрес утечки BSTR. Выполните команду !heap -p -a <address> , чтобы получить дополнительные сведения о выделении.
  • Параметр 2  —  адрес трассировки стека выделения. Запустите адрес> dps<, чтобы просмотреть стек выделения.
  • Параметр 3  - Адрес имени библиотеки DLL владельца. Выполните команду du <address> , чтобы прочитать имя библиотеки DLL.
  • Параметр 4  -  База библиотеки DLL владельца. Выполните команду .reload <dll_name> = <address> , чтобы перезагрузить библиотеку DLL владельца. Используйте "lm", чтобы получить дополнительные сведения о загруженных и выгруженных модулях.

Дополнительная информация
  • Тестовый уровень:  Утечки
  • Идентификатор остановки:  SYSSTRING
  • Код остановки:  900NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Уведомление питания не было отменено.

Вероятная причина

Эта остановка создается, если библиотека DLL, зарегистрированная для уведомления о энергопотреблении, была динамически выгружена без отмены регистрации.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  — Адрес регистрации уведомления о энергопотреблении.
  • Параметр 2  —  адрес трассировки стека регистрации. Запустите адрес> dps<, чтобы просмотреть стек выделения.
  • Параметр 3  - Адрес имени библиотеки DLL владельца. Выполните команду du <address> , чтобы прочитать имя библиотеки DLL.
  • Параметр 4  -  База библиотеки DLL владельца. Выполните команду .reload <dll_name> = <address> , чтобы перезагрузить библиотеку DLL владельца. Используйте "lm", чтобы получить дополнительные сведения о загруженных и выгруженных модулях.

Дополнительная информация
  • Тестовый уровень:  Утечки
  • Идентификатор остановки:  POWER_NOTIFICATION
  • Код остановки:  900NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

Произошла утечка выделения COM.

Вероятная причина

Эта остановка создается, если библиотека dll владельца выделения COM была динамически выгружена во время владения ресурсами.

Сведения, отображаемые с помощью средства проверки приложений
  • Параметр 1  - Адрес утечки выделения COM. Выполните команду !heap -p -a <address> , чтобы получить дополнительные сведения о выделении.
  • Параметр 2  —  адрес трассировки стека выделения. Запустите адрес> dps<, чтобы просмотреть стек выделения.
  • Параметр 3  - Адрес имени библиотеки DLL владельца. Выполните команду du <address> , чтобы прочитать имя библиотеки DLL.
  • Параметр 4  -  База библиотеки DLL владельца. Выполните команду .reload <dll_name> = <address> , чтобы перезагрузить библиотеку DLL владельца. Используйте "lm", чтобы получить дополнительные сведения о загруженных и выгруженных модулях.

Дополнительная информация
  • Тестовый уровень:  Утечки
  • Идентификатор остановки:  COM_ALLOCATION
  • Код остановки:  900NAN
  • Тяжести:  Ошибка
  • Одноразовая ошибка: 
  • Отчет об ошибках:  Перерыв
  • Вход в файл:  Да
  • Создать обратную трассировку:  Да

См. также:

Средство проверки приложений — коды и определения остановки

Средство проверки приложений — обзор

Средство проверки приложений — функции

Средство проверки приложений — тестирование приложений

Средство проверки приложений — тесты в службе проверки приложений

Средство проверки приложений — отладка остановки средства проверки приложений

Средство проверки приложений — часто задаваемые вопросы