Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Следующие коды остановки содержатся в наборе базовых тестов.
Сведения об остановке исключений
Попытайтесь выполнить код в неисполнимой памяти (первый шанс).
вероятной причинойЭта остановка создается, если приложение пытается запустить код из адреса, отличного от исполняемого или свободного. Для отладки этой остановки: $ u parameter2 — чтобы отменить удаление кода виновника $ exr parameter3 — для отображения сведений об исключении; $cxr parameter4, за которым следует kb , чтобы отобразить сведения о контексте исключения и трассировку стека за время возникновения исключения.
сведения, отображаемые проверяющего приложения- Параметр 1 - Адрес, к который осуществляется доступ.
- Параметр 2 - Код, выполняющий недопустимый доступ.
- Параметр 3 - Запись исключения. Используйте exr для отображения.
- Параметр 4 - Контекстная запись. Используйте CXR для отображения.
- Тестовый уровень: Исключения
- Идентификатор остановки: FIRST_CHANCE_ACCESS_VIOLATION_CODE
- Остановить код: 650NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Обработка сведений об остановке
Недопустимое исключение дескриптора для текущей трассировки стека.
вероятной причинойЭта остановка создается, если функция в верхней части стека передает недопустимый дескриптор системным подпрограммам. Обычно простая команда kb показывает, что является значением переданного дескриптора (должно быть одним из параметров , как правило, первым). Если значение равно NULL, то это явно неправильно. Если значение выглядит нормально, необходимо использовать расширение отладчика !htrace, чтобы получить журнал операций, относящихся к этому значению дескриптора. В большинстве случаев значение дескриптора используется после закрытия.
сведения, отображаемые проверяющего приложения- Параметр 1 - Код исключения.
- Параметр 2 - Запись исключения. Используйте exr для отображения.
- Параметр 3 - Контекстная запись. Используйте CXR для отображения.
- параметр 4 — не используется.
- Тестовый уровень: Ручки
- Идентификатор остановки: INVALID_HANDLE
- Остановить код: 300NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Недопустимый индекс TLS, используемый для текущей трассировки стека.
вероятной причинойЭта остановка создается, если функция в верхней части стека передала недопустимый индекс TLS в системные подпрограммы TLS. Обычно простая команда kb показывает, что не так. Типичная ошибка заключается в том, чтобы предположить определенное значение для индекса TLS вместо вызова TlsAlloc. Это может произойти, думая, что всегда получается значение N, поэтому нет необходимости вызывать TlsAlloc или чаще из-за неинициализированной переменной.
сведения, отображаемые проверяющего приложения- Параметр 1 - Недопустимый индекс TLS.
- Параметр 2 - Ожидается нижняя часть индекса.
- параметр 3 — не используется.
- параметр 4 — не используется.
- Тестовый уровень: Ручки
- Идентификатор остановки: INVALID_TLS_VALUE
- Остановить код: 300NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Недопустимые параметры вызова WaitForMultipleObjects.
вероятной причинойЭта остановка создается, если функция в верхней части стека под названием WaitForMultipleObjects с значением NULL в качестве адреса массива дескрипторов, ожидающих или с нулевым числом дескрипторов. Простая команда kb покажет функцию, вызываемую этим API неправильно.
сведения, отображаемые проверяющего приложения- Параметр 1 - Address of object handles vectors.
- Параметр 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 с дескриптором семафора в качестве параметра создаст эту остановку. Для отладки этой остановки: $ kb — для отображения текущей трассировки стека. Виновник, вероятно, является библиотекой DLL, которая вызывается в verifier.dll; $ du parameter2 — для отображения фактического типа дескриптора. Значение дескриптора — parameter1. В приведенном выше примере будет отображаться семафор. $ du parameter3 — для отображения типа объекта, ожидаемого API. В приведенном выше примере это имя будет: Событие. $ !htrace parameter1 может оказаться полезным, так как он будет отображать трассировку стека для последних операций открытия или закрытия этого дескриптора.
сведения, отображаемые проверяющего приложения- Параметр 1 - Handle value.
- Параметр 2 - Имя типа объекта. Использование du для отображения
- Параметр 3 - Ожидаемое имя типа объекта. Использование du для отображения
- параметр 4 — не используется.
- Тестовый уровень: Ручки
- Идентификатор остановки: INCORRECT_OBJECT_TYPE
- Остановить код: 300NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Сведения об остановке кучи
Неизвестная ошибка.
вероятной причинойЭто сообщение может произойти, если обнаруженная ошибка не может быть классифицирована каким-либо другим способом. Сейчас не используется.
сведения, отображаемые проверяющего приложения- Параметр 1 - Не используется
- Параметр 2 - Не используется
- Параметр 3 - Не используется
- Параметр 4 - Не используется
- Тестовый уровень: Уйма
- Идентификатор остановки: UNKNOWN_ERROR
- Остановить код: 0NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Исключение нарушения доступа.
вероятной причинойЭто наиболее распространенная остановка средства проверки приложений. Обычно это вызвано ошибкой переполнения буфера. Средство проверки кучи помещает недоступную страницу в конце выделения кучи и переполнение буфера приведет к исключению, коснувшись этой страницы. Чтобы отладить эту остановку, определите адрес доступа, вызвавшее исключение, а затем используйте следующую команду отладчика: !heap -p -a ACCESS_ADDRESS Эта команда предоставит подробные сведения о характере ошибки и о том, какой блок кучы перезапущен. Он также даст трассировку стека для выделения блоков. Существует несколько других причин для этой остановки. Например, доступ к блоку кучи после освобождения. Та же команда отладчика будет полезна для этого случая.
сведения, отображаемые проверяющего приложения- Параметр 1 - Недопустимый адрес, вызывающий исключение
- Параметр 2 - Адрес кода, выполняющий недопустимый доступ
- Параметр 3 - Запись исключения
- Параметр 4 - Контекстная запись
- Тестовый уровень: Уйма
- Идентификатор остановки: ACCESS_VIOLATION
- Остановить код: 0NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Многопоточный доступ в куче, созданной с помощью флага HEAP_NO_SERIALIZE.
вероятной причинойКуча, созданная с помощью флага HEAP_NO_SERIALIZE, не должна быть получена одновременно из двух потоков. Если такая ситуация обнаружена, вы получите это сообщение. Типичный способ того, как эта ситуация ползут в программу, заключается в связывании с однопоточной версией среды выполнения C. Visual C++ может статически связать такую библиотеку при использовании соответствующих флагов. Затем люди забывают об этом подробно и используют несколько потоков. Ошибку очень трудно отлаживать в реальной жизни, так как она будет отображаться как таинственные повреждения данных.
сведения, отображаемые проверяющего приложения- Параметр 1 - Куча, в которой происходит операция.
- Параметр 2 - Thread ID для текущего владельца кучи критически важный раздел.
- Параметр 3 - Thread ID текущего потока, пытающегося ввести кучу.
- Параметр 4 - Не используется
- Тестовый уровень: Уйма
- Идентификатор остановки: UNSYNCHRONIZED_ACCESS
- Остановить код: 0NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Запрос крайнего размера.
вероятной причинойЭто сообщение будет создано, если в операции HeapAlloc() или HeapReAlloc() размер блока превышает любое разумное значение. Обычно это значение 0x80000000 на 32-разрядных платформах и значительно больше на 64-разрядных платформах.
сведения, отображаемые проверяющего приложения- Параметр 1 - Куча, в которой происходит операция.
- Параметр 2 - Запрошенный размер
- Параметр 3 - Не используется
- Параметр 4 - Не используется
- Тестовый уровень: Уйма
- Идентификатор остановки: EXTREME_SIZE_REQUEST
- Остановить код: 0NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Дескриптор кучи с неправильной подписью.
вероятной причинойСтруктуры кучи помечены волшебным значением. Если дескриптор кучи, используемый в вызове интерфейса кучи, не имеет этого шаблона, то будет создана эта остановка. Эта ошибка может произойти, если в какой-то мере внутренняя структура кучы повреждена (случайное повреждение) или просто нефиксное значение используется в качестве дескриптора кучи. Чтобы получить список допустимых значений дескриптора кучи, используйте следующие команды отладчика: !heap -p Обратите внимание, что если просто переключить допустимый дескриптор кучи с другим допустимым в операции кучи, вы не получите эту остановку (дескриптор выглядит допустимым после всех). Однако средство проверки кучи обнаруживает эту ситуацию и сообщает об этом с помощью SWITCHED_HEAP_HANDLE остановки.
сведения, отображаемые проверяющего приложения- Параметр 1 - Кучи дескриптор, используемый в вызове интерфейса кучи
- Параметр 2 - Не используется
- Параметр 3 - Не используется
- Параметр 4 - Не используется
- Тестовый уровень: Уйма
- Идентификатор остановки: BAD_HEAP_HANDLE
- Остановить код: 0NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Поврежденный указатель кучи или использование неправильной кучи.
вероятной причинойОбычно это происходит, если блок выделяется в одной куче и освобождается в другой. Используйте команду !heap -p, чтобы получить список всех допустимых значений дескриптора кучи. Наиболее распространенным примером является выделение msvcrt с помощью malloc() в паре с размещением сделки kernel32 с помощью HeapFree().
сведения, отображаемые проверяющего приложения- Параметр 1 - Кучи дескриптор, используемый в вызове.
- Параметр 2 - Кучи блок, участвующий в операции.
- Параметр 3 - Размер блока кучи.
- Параметр 4 - Куча, где блок был первоначально выделен.
- Тестовый уровень: Уйма
- Идентификатор остановки: SWITCHED_HEAP_HANDLE
- Остановить код: 0NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Кучи блок уже освобожден.
вероятной причинойЭта ситуация происходит, если блок освобождается дважды. Освобожденные блоки помечаются специальным образом и хранятся в течение некоторого времени в отложенной бесплатной очереди. Если программа ошибки пытается освободить блок снова, это будет поймано, если блок не был удален из отложенной бесплатной очереди и ее памяти, используемой повторно для других выделений. Глубина свободной очереди задержки находится в порядке тысяч блоков, поэтому есть хорошие шансы, что большинство двойных освобождений будут пойманы.
сведения, отображаемые проверяющего приложения- Параметр 1 - Кучи дескриптор для кучи, принадлежащей блоку.
- Параметр 2 - Кучи блок освобождается снова.
- Параметр 3 - Размер блока кучи.
- Параметр 4 - Не используется
- Тестовый уровень: Уйма
- Идентификатор остановки: DOUBLE_FREE
- Остановить код: 0NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Поврежденный блок кучы.
вероятной причинойЭто универсальная ошибка, выданная, если повреждение в блоке кучи не может быть помещено в более конкретную категорию.
сведения, отображаемые проверяющего приложения- Параметр 1 - Кучи дескриптор, используемый в вызове.
- Параметр 2 - Кучи блок, участвующий в операции.
- Параметр 3 - Размер блока кучи.
- Параметр 4 - Зарезервировано
- Тестовый уровень: Уйма
- Идентификатор остановки: CORRUPTED_HEAP_BLOCK
- Остановить код: 0NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Попытка уничтожить кучу процесса.
вероятной причинойЭто ошибка, чтобы попытаться уничтожить кучу процесса по умолчанию (тот, который возвращается интерфейсом GetProcessHeap().
сведения, отображаемые проверяющего приложения- Параметр 1 - Кучи дескриптор используется с ХеапДестроем.
- Параметр 2 - Не используется
- Параметр 3 - Не используется
- Параметр 4 - Не используется
- Тестовый уровень: Уйма
- Идентификатор остановки: DESTROY_PROCESS_HEAP
- Остановить код: 0NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Неожиданное исключение, возникающее при выполнении кода управления кучей.
вероятной причинойЭта остановка создается, если при выполнении кода диспетчера кучи нарушение доступа возникает в нелегитимных ситуациях. Существует очень мало ситуаций, когда это нормально, например при вызове HeapValidate() или HeapSize(). Сведения о записи исключений (третий параметр) можно использовать для поиска точного контекста исключения. Для этого используйте следующие команды отладчика: $ .exr STOP-PARAMETER-2 $ Cxr STOP-PARAMETER-3 Обычно это может произойти, если в внутренних структурах кучи возникает случайное повреждение.
сведения, отображаемые проверяющего приложения- Параметр 1 - Куча, вовлеченная в операцию.
- Параметр 2 - Запись исключения.
- Параметр 3 - Контекстная запись.
- Параметр 4 - Код исключения (C0000005 - нарушение доступа)
- Тестовый уровень: Уйма
- Идентификатор остановки: UNEXPECTED_EXCEPTION
- Остановить код: 0NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Исключение, возникающее при проверке заголовка блока кучы.
вероятной причинойЭта ситуация происходит, если мы действительно не можем определить какой-либо конкретный тип повреждения для блока. Скорее всего, эта остановка произойдет, когда адрес блока кучи, переданный в кучу бесплатных точек в недоступную область памяти (поврежденная указатель, неинициализированная указатель и т. д.).
сведения, отображаемые проверяющего приложения- Параметр 1 - Кучи дескриптор для кучи, принадлежащей блоку.
- Параметр 2 - Кучи блок, который поврежден.
- Параметр 3 - Размер блока или нуля, если невозможно определить размер.
- параметр 4 — не используется.
- Тестовый уровень: Уйма
- Идентификатор остановки: CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_HEADER
- Остановить код: 0NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Исключение, возникающее при проверке блока кучи.
вероятной причинойЭта ситуация происходит, если мы действительно не можем определить какой-либо конкретный тип повреждения для блока. Например, вы получите это, если во время операции с кучей вы передаете адрес, указывающий на недоступную область памяти. Это также может произойти для двойных бесплатных ситуаций, если мы не находим блоки полной кучи страницы, и мы пробуем его как легкий блок кучи страницы.
сведения, отображаемые проверяющего приложения- Параметр 1 - Кучи дескриптор, используемый в вызове.
- Параметр 2 - Кучи блок, участвующий в операции.
- Параметр 3 - Размер блока кучи.
- Параметр 4 - Зарезервировано.
- Тестовый уровень: Уйма
- Идентификатор остановки: CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_PROBING
- Остановить код: 0NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Кучи блок поврежден после освобождения.
вероятной причинойЭта ситуация возникает, если блок памяти записывается после освобождения.
сведения, отображаемые проверяющего приложения- Параметр 1 - Кучи дескриптор для кучи, принадлежащей блоку.
- Параметр 2 - Кучи блок, который поврежден.
- Параметр 3 - Размер блока или нуля, если невозможно определить размер.
- параметр 4 — не используется.
- Тестовый уровень: Уйма
- Идентификатор остановки: CORRUPTED_HEAP_BLOCK_HEADER
- Остановить код: 0NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Поврежденный шаблон infix для свободного блока кучи.
вероятной причинойОсвобожденные блоки иногда помечены как недоступные, и программа, касающаяся их, будет нарушать (другая остановка проверки). В других случаях (светлая куча страницы) блок помечается волшебным шаблоном и будет храниться в течение некоторого времени. В конечном итоге в FIFO моде блоки получают действительно освобождены. На данный момент проверяется шаблон infix, и если он был изменен, вы получите этот разрыв. Стек в момент останова не имеет значения. Необходимо выяснить природу блока и кода проверить код, который может быть неправильным.
сведения, отображаемые проверяющего приложения- Параметр 1 - Кучи дескриптор для кучи, принадлежащей блоку.
- Параметр 2 - Кучи блок освобождается.
- Параметр 3 - Размер блока кучи.
- Параметр 4 - Зарезервировано.
- Тестовый уровень: Уйма
- Идентификатор остановки: CORRUPTED_FREED_HEAP_BLOCK
- Остановить код: 0NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Поврежденный шаблон суффикса для блока кучи.
вероятной причинойЧаще всего это происходит для ошибок переполнения буфера. Иногда средство проверки приложений помещает недоступные страницы в конце выделения и переполнения буфера приведет к нарушению доступа, а иногда блок кучи следует волшебным шаблоном. Если этот шаблон изменяется при освобождении блока, вы получите этот разрыв. Эти разрывы могут быть довольно трудными для отладки, так как у вас нет фактического момента, когда произошла коррупция. У вас просто есть доступ к свободному моменту (остановиться здесь) и трассировке стека выделения (!куча -p -a HEAP_ADDRESS)
сведения, отображаемые проверяющего приложения- Параметр 1 - Кучи дескриптор, используемый в вызове.
- Параметр 2 - Кучи блок, участвующий в операции.
- Параметр 3 - Размер блока кучи.
- Параметр 4 - Зарезервировано.
- Тестовый уровень: Уйма
- Идентификатор остановки: CORRUPTED_HEAP_BLOCK_SUFFIX
- Остановить код: 0NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Поврежденная метка запуска блока кучи.
вероятной причинойЭто происходит для подзапуска буфера.
сведения, отображаемые проверяющего приложения- Параметр 1 - Кучи дескриптор, используемый в вызове.
- Параметр 2 - Кучи блок, участвующий в операции.
- Параметр 3 - Размер блока кучи.
- Параметр 4 - Поврежденное значение метки.
- Тестовый уровень: Уйма
- Идентификатор остановки: CORRUPTED_HEAP_BLOCK_START_STAMP
- Остановить код: 0NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Поврежденная метка конца для блока кучи.
вероятной причинойЭто происходит для подзапуска буфера.
сведения, отображаемые проверяющего приложения- Параметр 1 - Кучи дескриптор, используемый в вызове.
- Параметр 2 - Кучи блок, участвующий в операции.
- Параметр 3 - Размер блока кучи.
- Параметр 4 - Поврежденное значение метки.
- Тестовый уровень: Уйма
- Идентификатор остановки: CORRUPTED_HEAP_BLOCK_END_STAMP
- Остановить код: 0NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Поврежденный шаблон префикса для блока кучи.
вероятной причинойЭто происходит для подзапуска буфера.
сведения, отображаемые проверяющего приложения- Параметр 1 - Кучи дескриптор, используемый в вызове.
- Параметр 2 - Кучи блок, участвующий в операции.
- Параметр 3 - Размер блока кучи.
- Параметр 4 - Зарезервировано.
- Тестовый уровень: Уйма
- Идентификатор остановки: CORRUPTED_HEAP_BLOCK_PREFIX
- Остановить код: 0NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Первое нарушение доступа для текущей трассировки стека.
вероятной причинойЭто наиболее распространенная остановка средства проверки приложений. Обычно это вызвано ошибкой переполнения буфера. Средство проверки кучи помещает недоступную страницу в конце выделения кучи и переполнение буфера приведет к исключению, коснувшись этой страницы. Чтобы отладить эту остановку, определите адрес доступа, вызвавшее исключение, а затем используйте следующую команду отладчика: !heap -p -a ACCESS_ADDRESS Эта команда предоставит подробные сведения о характере ошибки и о том, какой блок кучы перезапущен. Он также даст трассировку стека для выделения блоков. Существует несколько других причин для этой остановки. Например, доступ к блоку кучи после освобождения. Та же команда отладчика будет полезна для этого случая.
сведения, отображаемые проверяющего приложения- Параметр 1 - Недопустимый адрес, вызывающий исключение.
- Параметр 2 - Код адреса, выполняющего недопустимый доступ.
- Параметр 3 - Запись исключения.
- Параметр 4 - Контекстная запись.
- Тестовый уровень: Уйма
- Идентификатор остановки: FIRST_CHANCE_ACCESS_VIOLATION
- Остановить код: 0NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Недопустимое число списков кучи процессов.
вероятной причинойЭто сообщение может произойти, если при вызове GetProcessHeaps диспетчер кучи страницы обнаруживает некоторые внутренние несоответствия. Это может быть вызвано некоторым случайным повреждением в пространстве процесса.
сведения, отображаемые проверяющего приложения- Параметр 1 - Фактическое число кучи.
- Параметр 2 - Число куч страниц.
- Параметр 3 - Не используется
- Параметр 4 - Не используется
- Тестовый уровень: Уйма
- Идентификатор остановки: CORRUPTED_HEAP_LIST
- Остановить код: 0NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Сведения об остановке утечки
Утечка выделения кучи.
вероятной причинойЭта остановка создается, если владелец библиотеки dll выделения был динамически выгружен во время владения ресурсами.
сведения, отображаемые проверяющего приложения- Параметр 1 - Адрес утечки выделения. Запустите !кучу -p -a <адрес> , чтобы получить дополнительные сведения о выделении.
- Параметр 2 - Адрес трассировки стека выделения. Запустите адрес> dps <для просмотра стека выделения.
- Параметр 3 - Адрес имени библиотеки dll владельца. Запустите du <address> , чтобы прочитать имя библиотеки DLL.
- Параметр 4 - Base of the owner dll. Запустите reload <dll_name> = <адрес> для перезагрузки библиотеки DLL владельца. Используйте lm, чтобы получить дополнительные сведения о загруженных и выгрузочных модулях.
- Тестовый уровень: Течь
- Идентификатор остановки: РАСПРЕДЕЛЕНИЕ
- Остановить код: 900NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
ДЕСКРИПтор был утечкой.
вероятной причинойЭта остановка создается, если владелец библиотеки DLL дескриптора был динамически выгружен во время владения ресурсами. Чтобы выполнить отладку этой остановки, выполните команду !htrace parameter1, чтобы получить дополнительные сведения об дескрипторе.
сведения, отображаемые проверяющего приложения- Параметр 1 - Значение утечки дескриптора. Запустите дескриптор !htrace <, чтобы получить дополнительные сведения об дескрипторе> , если включена трассировка дескриптора.
- Параметр 2 - Адрес трассировки стека выделения. Запустите адрес> dps <для просмотра стека выделения.
- Параметр 3 - Адрес имени библиотеки dll владельца. Запустите du <address> , чтобы прочитать имя библиотеки DLL.
- Параметр 4 - Base of the owner dll. Запустите reload <dll_name> = <адрес> для перезагрузки библиотеки DLL владельца. Используйте lm, чтобы получить дополнительные сведения о загруженных и выгрузочных модулях.
- Тестовый уровень: Течь
- Идентификатор остановки: РУЧКА
- Остановить код: 900NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
HKEY был утечкой.
вероятной причинойЭта остановка создается, если владелец библиотеки dll раздела реестра динамически выгружается во время владения ресурсами.
сведения, отображаемые проверяющего приложения- Параметр 1 - Значение утечки HKEY.
- Параметр 2 - Адрес трассировки стека выделения. Запустите адрес> dps <для просмотра стека выделения.
- Параметр 3 - Адрес имени библиотеки dll владельца. Запустите du <address> , чтобы прочитать имя библиотеки DLL.
- Параметр 4 - Base of the owner dll. Запустите reload <dll_name> = <адрес> для перезагрузки библиотеки DLL владельца. Используйте lm, чтобы получить дополнительные сведения о загруженных и выгрузочных модулях.
- Тестовый уровень: Течь
- Идентификатор остановки: РЕГИСТРАТУРА
- Остановить код: 900NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Произошла утечка виртуального резервирования.
вероятной причинойЭта остановка создается, если владелец библиотеки DLL виртуального резервирования был динамически выгружен во время владения ресурсами.
сведения, отображаемые проверяющего приложения- Параметр 1 -Утечка адреса резервирования.
- Параметр 2 - Адрес трассировки стека выделения. Запустите адрес> dps <для просмотра стека выделения.
- Параметр 3 - Адрес имени библиотеки dll владельца. Запустите du <address> , чтобы прочитать имя библиотеки DLL.
- Параметр 4 - Base of the owner dll. Запустите reload <dll_name> = <адрес> для перезагрузки библиотеки DLL владельца. Используйте lm, чтобы получить дополнительные сведения о загруженных и выгрузочных модулях.
- Тестовый уровень: Течь
- Идентификатор остановки: VIRTUAL_RESERVATION
- Остановить код: 900NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
BSTR был утечкой.
вероятной причинойЭта остановка создается, если владелец библиотеки DLL sysString был динамически выгружен во время владения ресурсами.
сведения, отображаемые проверяющего приложения- Параметр 1 - Адрес утечки BSTR. Запустите !кучу -p -a <адрес> , чтобы получить дополнительные сведения о выделении.
- Параметр 2 - Адрес трассировки стека выделения. Запустите адрес> dps <для просмотра стека выделения.
- Параметр 3 - Адрес имени библиотеки dll владельца. Запустите du <address> , чтобы прочитать имя библиотеки DLL.
- Параметр 4 - Base of the owner dll. Запустите reload <dll_name> = <адрес> для перезагрузки библиотеки DLL владельца. Используйте lm, чтобы получить дополнительные сведения о загруженных и выгрузочных модулях.
- Тестовый уровень: Течь
- Идентификатор остановки: SYSSTRING
- Остановить код: 900NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Уведомление о power не было отменено.
вероятной причинойЭта остановка создается, если библиотека DLL зарегистрирована для уведомления о power и была динамически выгружена без отмены регистрации.
сведения, отображаемые проверяющего приложения- Параметр 1 - Адрес регистрации power notification.
- Параметр 2 - Адрес трассировки стека регистрации. Запустите адрес> dps <для просмотра стека выделения.
- Параметр 3 - Адрес имени библиотеки dll владельца. Запустите du <address> , чтобы прочитать имя библиотеки DLL.
- Параметр 4 - Base of the owner dll. Запустите reload <dll_name> = <адрес> для перезагрузки библиотеки DLL владельца. Используйте lm, чтобы получить дополнительные сведения о загруженных и выгрузочных модулях.
- Тестовый уровень: Течь
- Идентификатор остановки: POWER_NOTIFICATION
- Остановить код: 900NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Сведения об остановке блокировки
Поток не может иметь критически важный раздел.
вероятной причинойЭта остановка создается, если поток (идентификатор потока имеет параметр1) завершается, приостанавливается или находится в состоянии (рабочий поток завершен рабочий элемент), в котором он не может содержать критически важный раздел. Текущий поток является виновным. Чтобы отладить эту остановку, используйте следующие команды отладчика: $ kb — для получения текущей трассировки стека. Если текущий поток является владельцем критического раздела, вероятно, вызывает ExitThread. Текущий поток должен освободить критически важный раздел перед выходом. Если текущий поток вызывает TerminateThread или SuspendThread, он не должен делать это для потока, держащего критически важный раздел. $ !cs -s parameter2 — сведения о дампах этого критического раздела. $ ln parameter2 — отображение символов вблизи адреса критического раздела. Это должно помочь определить утечку критических разделов. Параметр $ dps4 — для дампа трассировки стека для инициализации этого критического раздела.
сведения, отображаемые проверяющего приложения- Параметр 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-name address.
- Параметр 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
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Двойной инициализированный или поврежденный критический раздел.
вероятной причинойОбычно эта остановка создается, если критически важный раздел инициализирован более одного раза. В этом случае параметр3 и параметр4 — это адреса трассировки стека для двух из этих инициализаций. В некоторых других случаях можно остановить эту остановку, если критически важный раздел или ее отладочная информационная структура повреждена. В этом втором случае возможно, что параметр3 и параметр4 являются недопустимыми и бесполезными. Для отладки этой остановки: $ !cs -s -d параметр2 — сведения о дампах этого критического раздела. $ 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 параметр3 — сведения о дампах этого критического раздела на основе текущего содержимого структуры отладочной информации, найденной в активном списке (эта структура редко повреждена, поэтому обычно эта информация является надежной). $ !cs -s параметр1 — сведения о дампах этого критического раздела на основе текущего содержимого критической структуры раздела (структура уже повреждена, поэтому иногда эта информация не является надежной). $ 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 - Recursion count.
- Параметр 3 - Ожидаемое число рекурсий.
- Параметр 4 - Критически важный адрес сведений об отладке раздела.
- Тестовый уровень: Замки
- Идентификатор остановки: LOCK_INVALID_RECURSION_COUNT
- Остановить код: 200NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Удаление критического раздела с недопустимым числом блокировок.
вероятной причинойЭта остановка создается, если критически важный раздел принадлежит потоку, если он удаляется или если критически важный раздел неинициализирован. Для отладки этой остановки: $ !cs -s parameter1 — сведения о дампах этого критического раздела. Если поток владения равен 0, критически важный раздел не инициализирован. $ ln parameter1 — для отображения символов рядом с адресом критического раздела. Это поможет определить критически важный раздел.
сведения, отображаемые проверяющего приложения- Параметр 1 - Критически важный адрес раздела.
- Параметр 2 - Lock count.
- Параметр 3 - Ожидаемое число блокировок.
- Параметр 4 - Владение потоком.
- Тестовый уровень: Замки
- Идентификатор остановки: LOCK_INVALID_LOCK_COUNT
- Остановить код: 200NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Критически важный раздел превышен или поврежден.
вероятной причинойЭта остановка создается, если критически важный раздел освобождается больше раз, чем текущий поток получил его. Для отладки этой остановки: $ !cs -s parameter1 — сведения о дампах этого критического раздела. $ !cs -s -d parameter4 — сведения о дампах этого критического раздела. $ ln parameter1 — для отображения символов рядом с адресом критического раздела. Это поможет определить критически важный раздел.
сведения, отображаемые проверяющего приложения- Параметр 1 - Критически важный адрес раздела.
- Параметр 2 - Lock count.
- Параметр 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 не равно 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
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Сведения об остановке SRWLock
Блокировка 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 в монопольном режиме и ожидает. Поток A пытается получить блокировку SRW в общем режиме рекурсивно. Это будет успешно до тех пор, пока нет эксклюзивного официанта (в данном случае B). Так как блокировки SRW не имеют нехватки записи, поток A ожидается за потоком B. Теперь thread B ожидает Thread A, который в свою очередь ожидает thread 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
- серьезность : предупреждение
- однократная ошибка:
- отчет об ошибке : Нет
- журнал в файл: да
- Создать обратную сторону: да
Сведения об остановке памяти
Освобождение блока виртуальной памяти с недопустимым размером или начальным адресом.
вероятной причинойЭта остановка создается, если средство проверки приложений обнаруживает выгрузку 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
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Проверка недопустимого адреса.
вероятной причинойЭта остановка создается, если средство проверки приложений обнаруживает вызов IsBadXXXPtr с недопустимым адресом (например, адресом в режиме ядра, а не обычным адресом пользовательского режима) для проверки буфера памяти. Чтобы выполнить отладку этой остановки, просмотрите текущую трассировку стека (кб) и попытайтесь определить, почему вызывающий функцию IsBadXXXPtr оказался недопустимым адресом. Во многих случаях адрес является обычным фиктивным, например неинициализированным указателем. Библиотека MSDN содержит несколько причин, по которым приложения не должны использовать API IsBadXXXPtr: в предварительной многозадачной среде можно изменить доступ процесса к тестируемой памяти. Деreferencing потенциально недопустимые указатели могут отключить расширение стека в других потоках. Поток, исчерпающий его стек, при отключении расширения стека приводит к немедленному завершению родительского процесса без всплывающего окна ошибки или диагностических сведений. Потоки в процессе, как ожидается, будут сотрудничать таким образом, чтобы один не освобождал память, что другие потребности. Использование этой функции не отменяет необходимость этого. Если это не сделано, приложение может завершиться непредсказуемым образом. Из-за всех этих причин мы рекомендуем никогда не использовать эти API.
сведения, отображаемые проверяющего приложения- Параметр 1 - Начальный адрес.
- Параметр 2 - Размер блока памяти.
- Параметр 3 - Недопустимый адрес.
- параметр 4 — не используется.
- Тестовый уровень: Память
- Идентификатор остановки: PROBE_INVALID_ADDRESS
- Остановить код: 600NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Пробуя бесплатную память.
вероятной причинойЭта остановка создается, если средство проверки приложений обнаруживает вызов IsBadXXXXPtr для свободного выделения памяти. Это очень плохо, потому что в некоторых других случаях эта память уже была повторно использована для некоторых других выделений. Так как текущий путь кода (kb) не владеет этой памятью, это может привести к повреждению памяти другого человека с катастрофическими последствиями. Чтобы отладить эту остановку, просмотрите текущую трассировку стека (kb) и попробуйте определить, почему вызывающий функцию IsBadXXXPtr в итоге проверит бесплатную память. Адрес может быть простым нефиксным (например, неинициализированным указателем) или, возможно, уже освобожденной памятью. Если память уже освобождена одним из API VirtualFree или UnmapViewOfFile, "!avrf -vs -a параметр3" будет искать журнал трассировок стека путей кода, выделенных или освобожденных из этого адреса, и отобразить эти трассировки стека, если они доступны. Это может показать трассировку стека, которая освобождает эту память. Чаще память — это уже освобожденное выделение кучи. Чтобы проверить это возможность, "!avrf -hp -a parameter3" будет искать журнал трассировок стека путей кода, выделенных или освобожденных из кучи, и отображать эти трассировки стека, если они доступны. Библиотека MSDN содержит несколько причин, по которым приложения не должны использовать API IsBadXXXPtr: в предварительной многозадачной среде можно изменить доступ процесса к тестируемой памяти. Деreferencing потенциально недопустимые указатели могут отключить расширение стека в других потоках. Поток, исчерпающий его стек, при отключении расширения стека приводит к немедленному завершению родительского процесса без всплывающего окна ошибки или диагностических сведений. Потоки в процессе, как ожидается, будут сотрудничать таким образом, чтобы один не освобождал память, что другие потребности. Использование этой функции не отменяет необходимость этого. Если это не сделано, приложение может завершиться непредсказуемым образом. Из-за всех этих причин мы рекомендуем никогда не использовать эти API.
сведения, отображаемые проверяющего приложения- Параметр 1 - Начальный адрес.
- Параметр 2 - Размер блока памяти.
- Параметр 3 - Адрес страницы свободной памяти.
- параметр 4 — не используется.
- Тестовый уровень: Память
- Идентификатор остановки: PROBE_FREE_MEM
- Остановить код: 600NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Проверка страницы охранника.
вероятной причинойЭта остановка создается, если средство проверки приложений обнаруживает вызов IsBadXXXXPtr для выделения памяти, содержащего по крайней мере одну GUARD_PAGE. Это очень плохо, потому что это очень возможно, что этот GUARD_PAGE является окончанием текущего стека потока. Как описано в библиотеке MSDN: деreferencing потенциально недопустимые указатели могут отключить расширение стека в других потоках. Поток, исчерпающий его стек, при отключении расширения стека приводит к немедленному завершению родительского процесса без всплывающего окна ошибки или диагностических сведений. Чтобы отладить эту остановку, просмотрите текущую трассировку стека (кб) и попробуйте определить, почему вызывающий функцию IsBadXXXPtr в итоге проверит GUARD_PAGE. Библиотека MSDN содержит несколько причин, по которым приложения не должны использовать API IsBadXXXPtr: в предварительной многозадачной среде можно изменить доступ процесса к тестируемой памяти. Деreferencing потенциально недопустимые указатели могут отключить расширение стека в других потоках. Поток, исчерпающий его стек, при отключении расширения стека приводит к немедленному завершению родительского процесса без всплывающего окна ошибки или диагностических сведений. Потоки в процессе, как ожидается, будут сотрудничать таким образом, чтобы один не освобождал память, что другие потребности. Использование этой функции не отменяет необходимость этого. Если это не сделано, приложение может завершиться непредсказуемым образом. Из-за всех этих причин мы рекомендуем никогда не использовать эти API.
сведения, отображаемые проверяющего приложения- Параметр 1 - Начальный адрес.
- Параметр 2 - Размер блока памяти.
- Параметр 3 - Адрес страницы охранника.
- параметр 4 — не используется.
- Тестовый уровень: Память
- Идентификатор остановки: PROBE_GUARD_PAGE
- Остановить код: 600NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Проверка NULL-адреса.
вероятной причинойЭта остановка создается, если средство проверки приложений обнаруживает вызов IsBadXXXXPtr с помощью NULL-адреса. Чтобы выполнить отладку этой остановки, просмотрите текущую трассировку стека (кб) и попробуйте определить, почему вызывающий функцию 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: в предварительной многозадачной среде можно изменить доступ процесса к тестируемой памяти. Деreferencing потенциально недопустимые указатели могут отключить расширение стека в других потоках. Поток, исчерпающий его стек, при отключении расширения стека приводит к немедленному завершению родительского процесса без всплывающего окна ошибки или диагностических сведений. Потоки в процессе, как ожидается, будут сотрудничать таким образом, чтобы один не освобождал память, что другие потребности. Использование этой функции не отменяет необходимость этого. Если это не сделано, приложение может завершиться непредсказуемым образом. Из-за всех этих причин мы рекомендуем никогда не использовать эти API.
сведения, отображаемые проверяющего приложения- параметр 1 — не используется.
- параметр 2 — не используется.
- параметр 3 — не используется.
- параметр 4 — не используется.
- Тестовый уровень: Память
- Идентификатор остановки: PROBE_NULL
- Остановить код: 600NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Проверка блока памяти с недопустимым начальным адресом или размером.
вероятной причинойЭта остановка создается, если средство проверки приложений обнаруживает вызов IsBadXXXPtr с недопустимым адресом начала (например, адресом режима ядра, а не обычным адресом пользовательского режима) или недопустимым размером буфера памяти для проверки. Чтобы выполнить отладку этой остановки, просмотрите текущую трассировку стека (кб) и попробуйте определить, почему вызывающий функцию IsBadXXXPtr в итоге получил недопустимый адрес или размер. Во многих случаях адрес или размер являются обычными фиктивными, например неинициализированными переменными. Библиотека MSDN содержит несколько причин, по которым приложения не должны использовать API IsBadXXXPtr: в предварительной многозадачной среде можно изменить доступ процесса к тестируемой памяти. Деreferencing потенциально недопустимые указатели могут отключить расширение стека в других потоках. Поток, исчерпающий его стек, при отключении расширения стека приводит к немедленному завершению родительского процесса без всплывающего окна ошибки или диагностических сведений. Потоки в процессе, как ожидается, будут сотрудничать таким образом, чтобы один не освобождал память, что другие потребности. Использование этой функции не отменяет необходимость этого. Если это не сделано, приложение может завершиться непредсказуемым образом. Из-за всех этих причин мы рекомендуем никогда не использовать эти API.
сведения, отображаемые проверяющего приложения- Параметр 1 - Начальный адрес.
- Параметр 2 - Размер блока памяти.
- параметр 3 — не используется.
- параметр 4 — не используется.
- Тестовый уровень: Память
- Идентификатор остановки: PROBE_INVALID_START_OR_SIZE
- Остановить код: 600NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Выгрузка библиотеки DLL с недопустимым размером или начальным адресом.
вероятной причинойЭта остановка создается, если средство проверки приложений обнаруживает выгрузку библиотеки DLL с недопустимым адресом начала или размером диапазона памяти DLL. Это, вероятно, означает повреждение памяти внутри внутреннего ntdll.dll загруженного списка DLL.
сведения, отображаемые проверяющего приложения- Параметр 1 - DLL-базовый адрес памяти.
- Параметр 2 - DLL-размер диапазона памяти.
- Параметр 3 - DLL-name address. Используйте du, чтобы дампать его.
- параметр 4 — не используется.
- Тестовый уровень: Память
- Идентификатор остановки: INVALID_DLL_RANGE
- Остановить код: 600NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Освобождение блока памяти в диапазоне адресов стека текущего потока.
вероятной причинойЭта остановка создается, если средство проверки приложений обнаруживает virtualFree для блока памяти, который фактически является частью стека текущего потока (!). Чтобы отладить эту остановку, просмотрите текущую трассировку стека (кб) и попытайтесь понять, почему функция, которая называется VirtualFree, думала, что блок памяти был динамически выделен или сопоставлен, но это фактически память, выделенная из стека.
сведения, отображаемые проверяющего приложения- Параметр 1 - Выделение базового адреса.
- Параметр 2 - Размер региона памяти.
- Параметр 3 - Stack low limit address.
- Параметр 4 - Stack high limit address.
- Тестовый уровень: Память
- Идентификатор остановки: 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 для адреса, который уже свободен. Чтобы отладить эту остановку, просмотрите текущую трассировку стека (kb) и попробуйте определить, почему память уже свободна, но приложение пытается снова освободить его. Параметр !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
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Непредвиденное исключение, возникающее во время проверки памяти.
вероятной причинойЭта остановка создается, если во время вызова IsBadXXXPtr возникает исключение. Это означает, что буфер памяти, который мы проверим, фактически не имеет защиты, предполагаемой вызывающим объектом, или что память была освобождена уже и т. д. Дополнительные примеры использования 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
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Попытка сброса NULL-адреса.
вероятной причинойЭта остановка создается, если средство проверки приложений обнаруживает вызов VirtualFree (MEM_RESET) с первым параметром NULL. MEM_RESET следует использовать только для уже выделенной памяти, поэтому ЗНАЧЕНИЕ NULL не является допустимым первым параметром в данном случае.
сведения, отображаемые проверяющего приложения- параметр 1 — не используется.
- параметр 2 — не используется.
- параметр 3 — не используется.
- параметр 4 — не используется.
- Тестовый уровень: Память
- Идентификатор остановки: INVALID_MEM_RESET
- Остановить код: 600NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Освобождение блока памяти кучи внутри диапазона адресов стека текущего потока.
вероятной причинойЭта остановка создается, если средство проверки приложения обнаруживает heapFree для блока памяти, который фактически является частью стека текущего потока (!). Чтобы отладить эту остановку, просмотрите текущую трассировку стека (kb) и попытайтесь понять, почему функция, которая называется HeapFree, думала, что блок памяти был динамически выделен или сопоставлен, но это фактически память, выделенная из стека.
сведения, отображаемые проверяющего приложения- Параметр 1 - Выделение базового адреса.
- Параметр 2 - Размер региона памяти.
- Параметр 3 - Stack low limit address.
- Параметр 4 - Stack high limit address.
- Тестовый уровень: Память
- Идентификатор остановки: FREE_THREAD_STACK_MEMORY_AS_HEAP
- Остановить код: 600NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Распаковка области памяти в диапазоне адресов стека текущего потока.
вероятной причинойЭта остановка создается, если средство проверки приложения обнаруживает unmapViewOfFile для блока памяти, который фактически является частью стека текущего потока (!). Чтобы отладить эту остановку, просмотрите текущую трассировку стека (kb) и попытайтесь понять, почему функция, которая называется UnmapViewOfFile, думала, что блок памяти был динамически выделен или сопоставлен, но это была фактически память, выделенная из стека.
сведения, отображаемые проверяющего приложения- Параметр 1 - Выделение базового адреса.
- Параметр 2 - Размер региона памяти.
- Параметр 3 - Stack low limit address.
- Параметр 4 - Stack high limit address.
- Тестовый уровень: Память
- Идентификатор остановки: FREE_THREAD_STACK_MEMORY_AS_MAP
- Остановить код: 600NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Неверный адрес RTL_RESOURCE.
вероятной причинойЭта остановка создается, если приложение пытается использовать NULL или другой неправильный адрес (например, адрес режима ядра) в качестве адреса допустимого объекта. RtlInitializeResource (NULL) является неправильным вызовом API, который активирует этот тип остановки проверяющего средства. param1 — это неверный адрес, используемый, и виновник находится в трассировке стека (отображается с помощью базы знаний).
сведения, отображаемые проверяющего приложения- Параметр 1 - Address.
- параметр 2 — не используется.
- параметр 3 — не используется.
- параметр 4 — не используется.
- Тестовый уровень: Память
- Идентификатор остановки: INVALID_RESOURCE_ADDRESS
- Остановить код: 600NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Недопустимый адрес критического раздела.
вероятной причинойЭта остановка создается, если приложение пытается использовать NULL или другой неправильный адрес (например, адрес режима ядра) в качестве адреса допустимого объекта. EnterCriticalSection(NULL) — это неправильный вызов API, который активирует этот тип остановки проверяющего средства. param1 — это неверный адрес, используемый, и виновник находится в трассировке стека (отображается с помощью базы знаний).
сведения, отображаемые проверяющего приложения- Параметр 1 - Address.
- параметр 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 - Buffer size.
- Параметр 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 параметр4, за которым следует kb , чтобы отобразить сведения о контексте исключения и трассировку стека на время возникновения исключения.
сведения, отображаемые проверяющего приложения- Параметр 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
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Сведения о остановке TLS
Выгрузка библиотеки 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-name address. Используйте du, чтобы дампать его.
- Параметр 4 - DLL базовый адрес.
- Тестовый уровень: TLS
- Идентификатор остановки: TLS_LEAK
- Остановить код: 350NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Поврежденная структура TLS проверяющего средства.
вероятной причинойЭта остановка создается, если внутренние структуры проверяющего средства, используемые для хранения состояния слотов TLS для потока, повреждены. Скорее всего, это связано с какой-то случайной коррупцией в процессе.
сведения, отображаемые проверяющего приложения- Параметр 1 - TEB-адрес.
- Параметр 2 - Ожидаемый адрес TEB.
- Параметр 3 - Thread ID.
- Параметр 4 - Ожидаемый идентификатор потока.
- Тестовый уровень: TLS
- Идентификатор остановки: CORRUPTED_TLS
- Остановить код: 350NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Использование недопустимого индекса TLS.
вероятной причинойЭта остановка создается, если используется недопустимый индекс TLS. В большинстве случаев код по-прежнему использует этот индекс при вызове TlsFree. Ниже приведен пример для потока threadpool. T1: загрузка библиотеки DLL и tlsAlloc T1: обратный вызов очереди T1: пропущенный или отмененный обратный вызов T1: TlsFree T2: обратный вызов выполняется и вызывает TlsSetValue T1: выгрузки dll
сведения, отображаемые проверяющего приложения- Параметр 1 -TLS-индекс
- Параметр 2 - Не используется.
- Параметр 3 - Не используется.
- Параметр 4 - Не используется.
- Тестовый уровень: TLS
- Идентификатор остановки: INVALID_TLS_INDEX
- Остановить код: 350NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Сведения об остановке Threadpool
Приоритет этого потока threadpool был изменен.
вероятной причинойЭта остановка создается, если приоритет потока изменяется при возвращении в threadpool.
сведения, отображаемые проверяющего приложения- Формат: — threadpool threadpool (%x) с выполнением обратного вызова (%p) имеет измененный приоритет потока (%i -> %i)
- Параметр 1 - Функция обратного вызова.
- Параметр 2 - Context.
- Параметр 3 - Threadpool Object Stack trace, используйте dps для дампа.
- Параметр 4 - Текущий приоритет.
- Тестовый уровень: Threadpool
- Идентификатор остановки: INCONSISTENT_PRIORITY
- Остановить код: 700NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Сходство этого потока threadpool было изменено.
вероятной причинойЭта остановка создается, если сопоставление потоков изменяется при возвращении в threadpool.
сведения, отображаемые проверяющего приложения- Формат: - threadpool threadpool (%x) с выполнением обратного вызова (%p) имеет измененную маску сходства потоков (%p -> %p)
- Параметр 1 - Функция обратного вызова.
- Параметр 2 - Context.
- Параметр 3 - Threadpool Object Stack trace, используйте dps для дампа.
- Параметр 4 - Current affinity.
- Тестовый уровень: Threadpool
- Идентификатор остановки: INCONSISTENT_AFFINITY_MASK
- Остановить код: 700NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Необработанные msg в пуле msg текущего потока.
вероятной причинойЭта остановка создается, если любое сообщение осталось без обработки, когда поток threadpool возвращается в пул. Это опасно, так как он будет обработан в совершенно другом контексте. Используйте !avrf -tp <Param4> , чтобы просмотреть сообщения, опубликованные в этом потоке.
сведения, отображаемые проверяющего приложения- Формат: - threadpool thread (%x) с выполнением обратного вызова (%p) имеет выдающееся сообщение окна (%x: %x)
- Параметр 1 - Функция обратного вызова.
- Параметр 2 - Context.
- Параметр 3 - Threadpool Object Stack trace, используйте dps для дампа.
- Параметр 4 - Threadpool thread id. Используйте !avrf -tp <threadid> , чтобы просмотреть сообщения, опубликованные в этом потоке.
- Тестовый уровень: Threadpool
- Идентификатор остановки: ORPHANED_THREAD_MESSAGE
- Остановить код: 700NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Незакрытое окно принадлежало текущему потоку.
вероятной причинойЭта остановка создается, если любое окно сохраняется в живых, когда этот поток threadpool возвращается в пул.
сведения, отображаемые проверяющего приложения- Формат: - threadpool thread (%x) с выполнением обратного вызова (%p) имеет допустимый hwnd (%x: %s) который может получать сообщения
- Параметр 1 - Функция обратного вызова.
- Параметр 2 - Context.
- Параметр 3 - Threadpool Object Stack trace, используйте dps для дампа.
- Параметр 4 - Threadpool thread id.
- Тестовый уровень: Threadpool
- Идентификатор остановки: ORPHANED_THREAD_WINDOW
- Остановить код: 700NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
ExitThread() в потоке threadpool.
вероятной причинойЭта остановка создается, если ExitThread вызывается в потоке threadpool. Это запрещено, так как это сделает систему нестабильной. Это приведет к утечке ресурсов, замораживанию или AV.
сведения, отображаемые проверяющего приложения- Параметр 1 - Функция обратного вызова.
- Параметр 2 - Context.
- Параметр 3 - Threadpool Object Stack trace, используйте dps для дампа.
- Параметр 4 - Не используется.
- Тестовый уровень: Threadpool
- Идентификатор остановки: ILLEGAL_THREAD_EXIT
- Остановить код: 700NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Поток находится в состоянии олицетворения, когда он возвращается в поток threadpool.
вероятной причинойЭта остановка создается, если функция обратного вызова изменяет маркер потока, чтобы олицетворить другого пользователя и забыл сбросить его, прежде чем вернуть его обратно в threadpool.
сведения, отображаемые проверяющего приложения- Параметр 1 - Функция обратного вызова.
- Параметр 2 - Context.
- Параметр 3 - Threadpool Object Stack trace, используйте dps для дампа.
- Параметр 4 - Не используется.
- Тестовый уровень: Threadpool
- Идентификатор остановки: THREAD_IN_IMPERSONATION
- Остановить код: 700NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Функция, требующая постоянного потока, вызывается.
вероятной причинойНекоторые API Microsoft Windows должны вызываться в выделенном или постоянном потоке. В threadpool, как правило, не следует использовать локальное хранилище потоков и асинхронные вызовы, требующие постоянного потока, например функцию RegNotifyChangeKeyValue. Однако такие функции можно поместить в очередь в постоянный рабочий поток с помощью QueueUserWorkItem с параметром WT_EXECUTEINPERSISTENTTHREAD. База знаний в отладчике отобразит вызывающий объект.
сведения, отображаемые проверяющего приложения- Параметр 1 - Функция обратного вызова.
- Параметр 2 - Context.
- Параметр 3 - Threadpool Object Stack trace, используйте dps для дампа.
- Параметр 4 - Не используется.
- Тестовый уровень: Threadpool
- Идентификатор остановки: PERSISTED_THREAD_NEEDED
- Остановить код: 700NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Поток находится в состоянии грязной транзакции.
вероятной причинойЭта остановка создается, если функция обратного вызова забыла закрыть или сбросить текущий дескриптор транзакции.
сведения, отображаемые проверяющего приложения- Параметр 1 - Функция обратного вызова.
- Параметр 2 - Context.
- Параметр 3 - Threadpool Object Stack trace, используйте dps для дампа.
- Параметр 4 - Дескриптор транзакции.
- Тестовый уровень: Threadpool
- Идентификатор остановки: DIRTY_TRANSACTION_CONTEXT
- Остановить код: 700NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Это состояние threadpool имеет несбалансированные вызовы CoInit и CoUnInit.
вероятной причинойЭта остановка создается, если функция обратного вызова вызывает CoInit и CoUnInit unbalanced.
сведения, отображаемые проверяющего приложения- Параметр 1 - Функция обратного вызова.
- Параметр 2 - Context.
- Параметр 3 - Threadpool Object Stack trace, используйте dps для дампа.
- Параметр 4 - Balanced Call counts.
- Тестовый уровень: Threadpool
- Идентификатор остановки: DIRTY_COM_STATE
- Остановить код: 700NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Параметры для объекта таймера несогласованы. Значение 0, если при создании таймера WT_EXECUTEONLYONCE указывается
вероятной причинойЭта остановка создается, если период для сигнала таймера не равен нулю, когда таймер будет сигнализировать только один раз с флагом WT_EXECUTEONLYONCE
сведения, отображаемые проверяющего приложения- Параметр 1 - Период, указанный.
- Параметр 2 - Флаги, указанные.
- Параметр 3 - Не используется.
- Параметр 4 - Не используется.
- Тестовый уровень: Threadpool
- Идентификатор остановки: INCONSISTENT_TIMER_PARAMS
- Остановить код: 700NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Блокировка загрузчика удерживается потоком threadpool в обратном вызове.
вероятной причинойЭта остановка создается, если блокировка загрузчика хранится в обратном вызове и не освобождается, когда поток возвращается в threadpool.
сведения, отображаемые проверяющего приложения- Параметр 1 - Функция обратного вызова.
- Параметр 2 - Context.
- Параметр 3 - Threadpool Object Stack trace, используйте dps для дампа.
- Параметр 4 - Не используется.
- Тестовый уровень: Threadpool
- Идентификатор остановки: LOADER_LOCK_HELD
- Остановить код: 700NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Предпочтительный язык задается потоком threadpool в обратном вызове.
вероятной причинойЭта остановка создается, если предпочтительный язык задан в обратном вызове и не очищается при возврате потока в threadpool.
сведения, отображаемые проверяющего приложения- Параметр 1 - Функция обратного вызова.
- Параметр 2 - Context.
- Параметр 3 - Threadpool Object Stack trace, используйте dps для дампа.
- Параметр 4 - Не используется.
- Тестовый уровень: Threadpool
- Идентификатор остановки: PREFERRED_LANGUAGES_SET
- Остановить код: 700NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
Фоновый приоритет задается потоком threadpool в обратном вызове.
вероятной причинойЭта остановка создается, если фоновый приоритет задан в обратном вызове и не отключается, когда поток возвращается в threadpool.
сведения, отображаемые проверяющего приложения- Параметр 1 - Функция обратного вызова.
- Параметр 2 - Context.
- Параметр 3 - Threadpool Object Stack trace, используйте dps для дампа.
- Параметр 4 - Не используется.
- Тестовый уровень: Threadpool
- Идентификатор остановки: BACKGROUND_PRIORITY_SET
- Остановить код: 700NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
TerminateThread() в потоке threadpool.
вероятной причинойЭта остановка создается, если метод TerminateThread вызывается в потоке threadpool. Это запрещено, так как это сделает систему нестабильной. Это приведет к утечке ресурсов, замораживанию или AV.
сведения, отображаемые проверяющего приложения- Параметр 1 - Не используется.
- Параметр 2 - Не используется.
- Параметр 3 - Не используется.
- Параметр 4 - Не используется.
- Тестовый уровень: Threadpool
- Идентификатор остановки: ILLEGAL_THREAD_TERMINATION
- Остановить код: 700NAN
- серьезность : ошибка
- однократная ошибка:
- отчет об ошибке : разрыв
- журнал в файл: да
- Создать обратную сторону: да
См. также
средство проверки приложений — остановки кодов и определений
средство проверки приложений — обзор
средство проверки приложений — функции
средство проверки приложений — тестирование приложений
средство проверки приложений — тесты в проверяющего приложения
средство проверки приложений— отладка средства проверки приложений останавливает
средство проверки приложений — часто задаваемые вопросы