다음을 통해 공유


애플리케이션 검증 도구 - 코드 중지 - 기본 사항

다음 중지 코드는 기본 테스트 집합에 포함되어 있습니다.

예외 중지 세부 정보

실행 불가능한 메모리에서 코드를 실행하려고 시도합니다(첫 번째 기회).

가능한 원인

애플리케이션이 실행 불가능하거나 무료인 주소에서 코드를 실행하려고 하면 이 중지가 생성됩니다. 이 중지를 디버그하려면 : $ u 매개 변수2 - 범인 코드의 어셈블을 해제하려면 $ .exr parameter3 - 예외 정보를 표시합니다. $ .cxr parameter4 다음에 kb - 예외가 발생한 시간에 대한 예외 컨텍스트 정보 및 스택 추적을 표시합니다.

Application Verifier에서 표시하는 정보
  • 액세스 중인 매개 변수 1 - 주소입니다.
  • 잘못된 액세스를 수행하는 매개 변수 2  코드 입니다.
  • 매개 변수 3  예외  레코드입니다. .exr을 사용하여 표시합니다.
  • 매개 변수 4  컨텍스트  레코드입니다. .cxr를 사용하여 표시합니다.

추가 정보
  • 테스트 계층: 예외
  • 중지 ID: FIRST_CHANCE_ACCESS_VIOLATION_CODE
  • 코드 중지: 650NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

중지 세부 정보 처리

현재 스택 추적에 대한 핸들 예외가 잘못되었습니다.

가능한 원인

스택 맨 위에 있는 함수가 시스템 루틴에 잘못된 핸들을 전달한 경우 이 중지가 생성됩니다. 일반적으로 간단한 kb 명령은 전달된 핸들의 값을 표시합니다(일반적으로 첫 번째 매개 변수 중 하나여야 합니다). 값이 null이면 분명히 잘못된 것입니다. 값이 정상인 경우 !htrace 디버거 확장을 사용하여 이 핸들 값과 관련된 작업 기록을 가져와야 합니다. 대부분의 경우 핸들 값을 닫은 후에 사용해야 합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1  예외  코드입니다.
  • 매개 변수 2 - 예외 레코드입니다. .exr을 사용하여 표시합니다.
  • 매개 변수 3  컨텍스트  레코드입니다. .cxr를 사용하여 표시합니다.
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 핸들
  • 중지 ID: INVALID_HANDLE
  • 코드 중지: 300NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

현재 스택 추적에 사용되는 TLS 인덱스가 잘못되었습니다.

가능한 원인

스택 맨 위에 있는 함수가 TLS 시스템 루틴에 잘못된 TLS 인덱스를 전달한 경우 이 중지가 생성됩니다. 일반적으로 간단한 kb 명령은 잘못된 내용을 표시합니다. 여기서 일반적인 버그는 TlsAlloc를 호출하는 대신 TLS 인덱스의 특정 값을 가정하는 것입니다. 이는 항상 값 N을 얻을 수 있으므로 TlsAlloc를 호출할 필요가 없거나 초기화되지 않은 변수로 인해 더 자주 발생할 수 있습니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 잘못된 TLS 인덱스입니다.
  • 매개 변수 2 - 인덱스의 하위 부분이 필요합니다.
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 핸들
  • 중지 ID: INVALID_TLS_VALUE
  • 코드 중지: 300NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

WaitForMultipleObjects 호출에 대한 매개 변수가 잘못되었습니다.

가능한 원인

이 중지는 대기할 핸들 배열의 주소로 NULL이 있는 WaitForMultipleObjects라는 스택 맨 위에 있는 함수가 핸들 수로 0인 경우 생성됩니다. 간단한 kb 명령은 이 API를 잘못 호출하는 함수를 표시합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 개체의 주소는 벡터를 처리합니다.
  • 매개 변수 2 개  핸들 수입니다.
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 핸들
  • 중지 ID: INCORRECT_WAIT_CALL
  • 코드 중지: 300NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

매개 변수로 전달된 NULL 핸들입니다. 유효한 핸들을 사용해야 합니다.

가능한 원인

스택 맨 위에 있는 함수가 NULL 핸들을 시스템 루틴에 전달하면 이 중지가 생성됩니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 사용되지 않음
  • 매개 변수 2 - 사용되지 않음
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 핸들
  • 중지 ID: NULL_HANDLE
  • 코드 중지: 300NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

DllMain에서 스레드 핸들을 기다리는 중입니다.

가능한 원인

현재 스레드가 현재 프로세스에 로드된 DLL 중 하나의 DllMain 함수 내에서 코드를 실행 중이고 WaitForSingleObject 또는 WaitForMultipleObjects를 호출하여 동일한 프로세스의 스레드 핸들에서 대기하는 경우 이 중지가 생성됩니다. 두 번째 스레드가 종료되지 않는 한 스레드 핸들이 신호를 받지 않으므로 교착 상태가 발생할 가능성이 높습니다. 두 번째 스레드가 ExitThread를 호출하면 DLL 로더 잠금을 획득한 다음 현재 프로세스의 모든 DLL에 대해 DllMain(DLL_THREAD_DETACH)을 호출합니다. 그러나 로더 잠금은 첫 번째 스레드(스레드 핸들에서 대기 중인 스레드)가 소유하므로 두 스레드가 교착 상태에 빠지게 됩니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 스레드 핸들입니다.
  • 매개 변수 2 - 사용되지 않음
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 핸들
  • 중지 ID: WAIT_IN_DLLMAIN
  • 코드 중지: 300NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

핸들의 개체 유형이 잘못되었습니다.

가능한 원인

현재 스레드가 잘못된 개체 형식의 개체에 대한 핸들이 있는 API를 호출하는 경우 이 중지가 생성됩니다. 예를 들어 세마포 핸들을 매개 변수로 사용하여 SetEvent를 호출하면 이 중지가 생성됩니다. 이 중지를 디버그하려면 $ kb - 현재 스택 추적을 표시합니다. 범인은 아마도 verifier.dll;를 호출하는 DLL일 것입니다. $ du parameter2 - 핸들의 실제 형식을 표시합니다. 핸들 값은 parameter1입니다. 위의 예제에서는 세마포를 표시합니다. $ du parameter3 - API에서 예상하는 개체 형식을 표시합니다. 위의 예제에서 이 이름은 Event입니다. $!htrace parameter1은 이 핸들에서 최근 열기/닫기 작업에 대한 스택 추적을 표시하기 때문에 유용할 수 있습니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1  핸들  값입니다.
  • 매개 변수 2 - 개체 형식 이름입니다. du를 사용하여 표시
  • 매개 변수 3 - 예상 개체 형식 이름입니다. du를 사용하여 표시
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 핸들
  • 중지 ID: INCORRECT_OBJECT_TYPE
  • 코드 중지: 300NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

힙 중지 세부 정보

알 수 없는 오류입니다.

가능한 원인

이 메시지는 발생한 오류를 다른 방법으로 분류할 수 없는 경우에 발생할 수 있습니다. 지금은 사용되지 않습니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 사용되지 않음
  • 매개 변수 2 - 사용되지 않음
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 힙
  • 중지 ID: UNKNOWN_ERROR
  • 코드 중지: 0NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

액세스 위반 예외입니다.

가능한 원인

가장 일반적인 애플리케이션 검증 도구 중지입니다. 일반적으로 버퍼 오버런 오류로 인해 발생합니다. 힙 검증 도구는 힙 할당의 끝에 액세스할 수 없는 페이지를 배치하고 버퍼 오버런은 이 페이지를 터치하여 예외를 발생합니다. 이 중지를 디버그하려면 예외를 발생시킨 액세스 주소를 식별한 다음 다음 디버거 명령을 사용합니다. !heap -p -a ACCESS_ADDRESS 이 명령은 오류의 특성과 오버런되는 힙 블록에 대한 세부 정보를 제공합니다. 또한 블록 할당에 대한 스택 추적을 제공합니다. 이 중지에는 몇 가지 다른 원인이 있습니다. 예를 들어 해제된 후 힙 블록에 액세스합니다. 이 경우에도 동일한 디버거 명령이 유용합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 잘못된 주소로 인해 예외가 발생합니다.
  • 잘못된 액세스를 실행하는 매개 변수 2  코드  주소
  • 매개 변수 3 - 예외 레코드
  • 매개 변수 4  컨텍스트  레코드

추가 정보
  • 테스트 계층: 힙
  • 중지 ID: ACCESS_VIOLATION
  • 코드 중지: 0NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

HEAP_NO_SERIALIZE 플래그를 사용하여 만든 힙의 다중 스레드 액세스입니다.

가능한 원인

HEAP_NO_SERIALIZE 플래그를 사용하여 만든 힙은 두 스레드에서 동시에 액세스할 수 없습니다. 이러한 상황이 감지되면 이 메시지가 표시됩니다. 이러한 상황이 프로그램에 들어오는 일반적인 방법은 단일 스레드 버전의 C 런타임과 연결하는 것입니다. Visual C++는 적절한 플래그를 사용할 때 이러한 라이브러리를 정적으로 연결할 수 있습니다. 그런 다음 사람들은 이 세부 정보를 잊어버리고 여러 스레드를 사용합니다. 이 버그는 신비한 데이터 손상으로 표시되기 때문에 실제 생활에서 디버그하기가 매우 어렵습니다.

Application Verifier에서 표시하는 정보
  • 작업이 수행되는 매개 변수 1 - 힙입니다.
  • 힙 중요 섹션의 현재 소유자에 대한 매개 변수 2 - 스레드 ID입니다.
  • 힙을 입력하려는 현재 스레드의 매개 변수 3 - 스레드 ID입니다.
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 힙
  • 중지 ID: UNSYNCHRONIZED_ACCESS
  • 코드 중지: 0NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

극단적 인 크기 요청.

가능한 원인

이 메시지는 HeapAlloc() 또는 HeapReAlloc() 작업에서 블록의 크기가 적절한 값보다 큰 경우 생성됩니다. 일반적으로 이 값은 32비트 플랫폼에서 0x80000000 64비트 플랫폼에서 훨씬 더 큽니다.

Application Verifier에서 표시하는 정보
  • 작업이 수행되는 매개 변수 1 - 힙입니다.
  • 매개 변수 2  크기 요청됨 
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 힙
  • 중지 ID: EXTREME_SIZE_REQUEST
  • 코드 중지: 0NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

잘못된 서명이 있는 힙 핸들입니다.

가능한 원인

힙 구조는 매직 값으로 태그가 지정됩니다. 힙 인터페이스 호출에 사용된 힙 핸들에 이 패턴이 없으면 이 중지가 생성됩니다. 내부 힙 구조가 손상되었거나(임의 손상) 단순히 가짜 값이 힙 핸들로 사용되는 경우 이 버그가 발생할 수 있습니다. 유효한 힙 핸들 값 목록을 가져오려면 다음 디버거 명령을 사용합니다. !heap -p 힙 작업에서 유효한 힙 핸들을 다른 유효한 핸들로 전환하면 이 중지가 표시되지 않습니다(핸들은 결국 유효해 보입니다). 그러나 힙 검증 도구는 이 상황을 감지하고 중지할 SWITCHED_HEAP_HANDLE 보고합니다.

Application Verifier에서 표시하는 정보
  • 힙 인터페이스 호출에 사용되는 매개 변수 1 - 힙 핸들
  • 매개 변수 2 - 사용되지 않음
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 힙
  • 중지 ID: BAD_HEAP_HANDLE
  • 코드 중지: 0NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

손상된 힙 포인터 또는 잘못된 힙을 사용하고 있습니다.

가능한 원인

일반적으로 블록이 한 힙에 할당되고 다른 힙에서 해제되는 경우 발생합니다. !heap -p 명령을 사용하여 유효한 모든 힙 핸들 값 목록을 가져옵니다. 가장 일반적인 예는 HeapFree()를 사용하여 kernel32 할당 취소와 쌍을 이루는 malloc()를 사용하는 msvcrt 할당입니다.

Application Verifier에서 표시하는 정보
  • 호출에 사용되는 매개 변수 1 - 힙 핸들입니다.
  • 작업에 관련된 매개 변수 2 - 힙 블록입니다.
  • 힙 블록의 매개 변수 3  크기 입니다.
  • 블록이 원래 할당된 매개 변수 4 - 힙입니다.

추가 정보
  • 테스트 계층: 힙
  • 중지 ID: SWITCHED_HEAP_HANDLE
  • 코드 중지: 0NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

힙 블록이 이미 해제되었습니다.

가능한 원인

이 상황은 블록이 두 번 해제되는 경우에 발생합니다. 해제된 블록은 특별한 방식으로 표시되며 지연된 무료 큐에서 잠시 동안 유지됩니다. 버그가 있는 프로그램이 블록을 다시 해제하려고 하면 블록이 지연된 무료 큐에서 큐에서 제거되지 않고 메모리가 다른 할당에 다시 사용되었다고 가정하면 잡힙니다. 지연 해제 큐의 깊이는 수천 개의 블록 순서에 있으므로 대부분의 이중 해제가 잡힐 가능성이 높습니다.

Application Verifier에서 표시하는 정보
  • 블록을 소유하는 힙에 대한 매개 변수 1 - 힙 핸들입니다.
  • 매개 변수 2 - 힙 블록이 다시 해제됩니다.
  • 힙 블록의 매개 변수 3  크기 입니다.
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 힙
  • 중지 ID: DOUBLE_FREE
  • 코드 중지: 0NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

손상된 힙 블록입니다.

가능한 원인

이는 힙 블록의 손상을 보다 구체적인 범주에 배치할 수 없는 경우 발생한 일반적인 오류입니다.

Application Verifier에서 표시하는 정보
  • 호출에 사용되는 매개 변수 1 - 힙 핸들입니다.
  • 작업에 관련된 매개 변수 2 - 힙 블록입니다.
  • 힙 블록의 매개 변수 3  크기 입니다.
  • 매개 변수 4  예약 

추가 정보
  • 테스트 계층: 힙
  • 중지 ID: CORRUPTED_HEAP_BLOCK
  • 코드 중지: 0NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

프로세스 힙을 삭제하려고 시도합니다.

가능한 원인

기본 프로세스 힙(GetProcessHeap() 인터페이스에서 반환된 힙)을 삭제하는 것은 오류입니다.

Application Verifier에서 표시하는 정보
  • HeapDestroy와 함께 사용되는 매개 변수 1 - 힙 핸들입니다.
  • 매개 변수 2 - 사용되지 않음
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 힙
  • 중지 ID: DESTROY_PROCESS_HEAP
  • 코드 중지: 0NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

힙 관리 코드를 실행하는 동안 예기치 않은 예외가 발생했습니다.

가능한 원인

이 중지는 힙 관리자 코드를 실행하는 동안 불법적인 상황에서 액세스 위반이 발생하는 경우 생성됩니다. HeapValidate() 또는 HeapSize()를 호출하는 경우와 같이 정상인 상황은 거의 없습니다. 예외 레코드 정보(세 번째 매개 변수)를 사용하여 예외의 정확한 컨텍스트를 찾을 수 있습니다. 다음과 같은 디버거 명령을 사용합니다. $ .exr STOP-PARAMETER-2 $ .cxr STOP-PARAMETER-3 일반적으로 내부 힙 구조에 임의의 손상이 있는 경우 이 중지가 발생할 수 있습니다.

Application Verifier에서 표시하는 정보
  • 작업에 관련된 매개 변수 1 - 힙입니다.
  • 매개 변수 2 - 예외 레코드입니다.
  • 매개 변수 3  컨텍스트  레코드입니다.
  • 매개 변수 4  예외  코드(C0000005 - 액세스 위반)

추가 정보
  • 테스트 계층: 힙
  • 중지 ID: UNEXPECTED_EXCEPTION
  • 코드 중지: 0NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

힙 블록 헤더를 확인하는 동안 예외가 발생했습니다.

가능한 원인

이 상황은 블록에 대한 특정 유형의 손상을 실제로 확인할 수 없는 경우에 발생합니다. 이 중지는 힙 사용 가능한 힙에 전달된 힙 블록 주소가 액세스할 수 없는 메모리 영역(손상된 포인터, 초기화되지 않은 포인터 등)을 가리키는 경우에 발생합니다.

Application Verifier에서 표시하는 정보
  • 블록을 소유하는 힙에 대한 매개 변수 1 - 힙 핸들입니다.
  • 손상된 매개 변수 2 - 힙 블록입니다.
  • 매개 변수 3 - 블록의 크기 또는 크기를 확인할 수 없는 경우 0입니다.
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 힙
  • 중지 ID: CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_HEADER
  • 코드 중지: 0NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

힙 블록을 확인하는 동안 예외가 발생했습니다.

가능한 원인

이 상황은 블록에 대한 특정 유형의 손상을 실제로 확인할 수 없는 경우에 발생합니다. 예를 들어 힙이 없는 작업 중에 액세스할 수 없는 메모리 영역을 가리키는 주소를 전달하는 경우 이를 얻을 수 있습니다. 전체 페이지 힙 블록 중에서 블록을 찾지 못하고 라이트 페이지 힙 블록으로 검색하는 경우 이중 무료 상황에서도 이 오류가 발생할 수 있습니다.

Application Verifier에서 표시하는 정보
  • 호출에 사용되는 매개 변수 1 - 힙 핸들입니다.
  • 작업에 관련된 매개 변수 2 - 힙 블록입니다.
  • 힙 블록의 매개 변수 3  크기 입니다.
  • 매개 변수 4-Reserved  .

추가 정보
  • 테스트 계층: 힙
  • 중지 ID: CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_PROBING
  • 코드 중지: 0NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

해제된 후 힙 블록이 손상되었습니다.

가능한 원인

이 상황은 메모리 블록이 해제된 후에 기록되는 경우에 발생합니다.

Application Verifier에서 표시하는 정보
  • 블록을 소유하는 힙에 대한 매개 변수 1 - 힙 핸들입니다.
  • 손상된 매개 변수 2 - 힙 블록입니다.
  • 매개 변수 3 - 블록의 크기 또는 크기를 확인할 수 없는 경우 0입니다.
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 힙
  • 중지 ID: CORRUPTED_HEAP_BLOCK_HEADER
  • 코드 중지: 0NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

해제된 힙 블록의 손상된 접두사 패턴입니다.

가능한 원인

해제된 블록은 액세스할 수 없는 것으로 표시되기도 하며 이를 터치하는 프로그램은 위반에 액세스합니다(다른 검증 도구 중지). 다른 경우(라이트 페이지 힙) 블록은 매직 패턴으로 표시되며 잠시 동안 유지됩니다. 결국 FIFO 방식으로 블록은 정말 해방됩니다. 현재 접두사 패턴이 검사 수정된 경우 이 중단이 표시됩니다. 중단 순간의 스택은 관련이 없습니다. 블록의 특성을 확인하고 코드에서 잘못된 코드를 검토해야 합니다.

Application Verifier에서 표시하는 정보
  • 블록을 소유하는 힙에 대한 매개 변수 1 - 힙 핸들입니다.
  • 매개 변수 2 - 힙 블록이 해제됩니다.
  • 힙 블록의 매개 변수 3  크기 입니다.
  • 매개 변수 4-Reserved  .

추가 정보
  • 테스트 계층: 힙
  • 중지 ID: CORRUPTED_FREED_HEAP_BLOCK
  • 코드 중지: 0NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

힙 블록의 손상된 접미사 패턴입니다.

가능한 원인

일반적으로 버퍼 오버런 오류에 대해 발생합니다. 경우에 따라 애플리케이션 검증 도구는 할당의 끝에 액세스할 수 없는 페이지를 배치하고 버퍼 오버런은 액세스 위반을 유발하고 힙 블록 뒤에 매직 패턴이 오는 경우도 있습니다. 블록이 해제될 때 이 패턴이 변경되면 이 중단이 발생합니다. 이러한 중단은 손상이 발생한 실제 순간이 없기 때문에 디버그하기가 매우 어려울 수 있습니다. 무료 순간(여기서 중지) 및 할당 스택 추적(!heap -p -a HEAP_ADDRESS)에 액세스할 수 있습니다.

Application Verifier에서 표시하는 정보
  • 호출에 사용되는 매개 변수 1 - 힙 핸들입니다.
  • 작업에 관련된 매개 변수 2 - 힙 블록입니다.
  • 힙 블록의 매개 변수 3  크기 입니다.
  • 매개 변수 4-Reserved  .

추가 정보
  • 테스트 계층: 힙
  • 중지 ID: CORRUPTED_HEAP_BLOCK_SUFFIX
  • 코드 중지: 0NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

힙 블록에 대한 손상된 시작 스탬프입니다.

가능한 원인

버퍼 언더런에 대해 발생합니다.

Application Verifier에서 표시하는 정보
  • 호출에 사용되는 매개 변수 1 - 힙 핸들입니다.
  • 작업에 관련된 매개 변수 2 - 힙 블록입니다.
  • 힙 블록의 매개 변수 3  크기 입니다.
  • 매개 변수 4  손상  스탬프 값입니다.

추가 정보
  • 테스트 계층: 힙
  • 중지 ID: CORRUPTED_HEAP_BLOCK_START_STAMP
  • 코드 중지: 0NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

힙 블록에 대한 손상된 끝 스탬프입니다.

가능한 원인

버퍼 언더런에 대해 발생합니다.

Application Verifier에서 표시하는 정보
  • 호출에 사용되는 매개 변수 1 - 힙 핸들입니다.
  • 작업에 관련된 매개 변수 2 - 힙 블록입니다.
  • 힙 블록의 매개 변수 3  크기 입니다.
  • 매개 변수 4  손상  스탬프 값입니다.

추가 정보
  • 테스트 계층: 힙
  • 중지 ID: CORRUPTED_HEAP_BLOCK_END_STAMP
  • 코드 중지: 0NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

힙 블록의 손상된 접두사 패턴입니다.

가능한 원인

버퍼 언더런에 대해 발생합니다.

Application Verifier에서 표시하는 정보
  • 호출에 사용되는 매개 변수 1 - 힙 핸들입니다.
  • 작업에 관련된 매개 변수 2 - 힙 블록입니다.
  • 힙 블록의 매개 변수 3  크기 입니다.
  • 매개 변수 4-Reserved  .

추가 정보
  • 테스트 계층: 힙
  • 중지 ID: CORRUPTED_HEAP_BLOCK_PREFIX
  • 코드 중지: 0NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

현재 스택 추적에 대한 첫 번째 기회 액세스 위반입니다.

가능한 원인

가장 일반적인 애플리케이션 검증 도구 중지입니다. 일반적으로 버퍼 오버런 오류로 인해 발생합니다. 힙 검증 도구는 힙 할당의 끝에 액세스할 수 없는 페이지를 배치하고 버퍼 오버런은 이 페이지를 터치하여 예외를 발생합니다. 이 중지를 디버그하려면 예외를 발생시킨 액세스 주소를 식별한 다음 다음 디버거 명령을 사용합니다. !heap -p -a ACCESS_ADDRESS 이 명령은 오류의 특성과 오버런되는 힙 블록에 대한 세부 정보를 제공합니다. 또한 블록 할당에 대한 스택 추적을 제공합니다. 이 중지에는 몇 가지 다른 원인이 있습니다. 예를 들어 해제된 후 힙 블록에 액세스합니다. 이 경우에도 동일한 디버거 명령이 유용합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 잘못된 주소로 인해 예외가 발생합니다.
  • 잘못된 액세스를 실행하는 매개 변수 2  코드  주소입니다.
  • 매개 변수 3  예외  레코드입니다.
  • 매개 변수 4  컨텍스트  레코드입니다.

추가 정보
  • 테스트 계층: 힙
  • 중지 ID: FIRST_CHANCE_ACCESS_VIOLATION
  • 코드 중지: 0NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

프로세스 힙 목록 수가 잘못되었습니다.

가능한 원인

이 메시지는 GetProcessHeaps를 호출하는 동안 페이지 힙 관리자가 일부 내부 불일치를 감지하는 경우에 발생할 수 있습니다. 프로세스 공간의 일부 임의 손상으로 인해 발생할 수 있습니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 실제 힙 수입니다.
  • 매개 변수 2  페이지 힙 수입니다.
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 힙
  • 중지 ID: CORRUPTED_HEAP_LIST
  • 코드 중지: 0NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

누수 중지 세부 정보

힙 할당이 유출되었습니다.

가능한 원인

이 중지는 리소스를 소유하는 동안 할당의 소유자 dll이 동적으로 언로드된 경우에 생성됩니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 유출된 할당의 주소입니다. !heap -p -a <주소를> 실행하여 할당에 대한 추가 정보를 가져옵니다.
  • 매개 변수 2 - 할당 스택 추적에 대한 주소입니다. dps <주소를> 실행하여 할당 스택을 봅니다.
  • 매개 변수 3 - 소유자 dll 이름의 주소입니다. du <주소를> 실행하여 dll 이름을 읽습니다.
  • 소유자 dll의 매개 변수 4-Base  입니다. .reload <dll_name> = <address> 를 실행하여 소유자 dll을 다시 로드합니다. 로드되고 언로드된 모듈에 대한 자세한 내용을 보려면 'lm'을 사용합니다.

추가 정보
  • 테스트 계층: 누수
  • 중지 ID: ALLOCATION
  • 코드 중지: 900NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

핸들이 유출되었습니다.

가능한 원인

이 중지는 리소스를 소유하는 동안 핸들의 소유자 dll이 동적으로 언로드된 경우에 생성됩니다. 이 중지를 디버그하려면 !htrace parameter1을 실행하여 핸들에 대한 추가 정보를 가져옵니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 유출된 핸들의 값입니다. 핸들 추적을 사용하는 경우 !htrace <핸들> 을 실행하여 핸들에 대한 추가 정보를 가져옵니다.
  • 매개 변수 2 - 할당 스택 추적에 대한 주소입니다. dps <주소를> 실행하여 할당 스택을 봅니다.
  • 매개 변수 3 - 소유자 dll 이름의 주소입니다. du <주소를> 실행하여 dll 이름을 읽습니다.
  • 소유자 dll의 매개 변수 4-Base  입니다. .reload <dll_name> = <address> 를 실행하여 소유자 dll을 다시 로드합니다. 로드되고 언로드된 모듈에 대한 자세한 내용을 보려면 'lm'을 사용합니다.

추가 정보
  • 테스트 계층: 누수
  • 중지 ID: HANDLE
  • 코드 중지: 900NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

HKEY가 유출되었습니다.

가능한 원인

이 중지는 리소스를 소유하는 동안 레지스트리 키의 소유자 dll이 동적으로 언로드된 경우에 생성됩니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 유출된 HKEY의 값입니다.
  • 매개 변수 2 - 할당 스택 추적에 대한 주소입니다. dps <주소를> 실행하여 할당 스택을 봅니다.
  • 매개 변수 3 - 소유자 dll 이름의 주소입니다. du <주소를> 실행하여 dll 이름을 읽습니다.
  • 소유자 dll의 매개 변수 4-Base  입니다. .reload <dll_name> = <address> 를 실행하여 소유자 dll을 다시 로드합니다. 로드되고 언로드된 모듈에 대한 자세한 내용을 보려면 'lm'을 사용합니다.

추가 정보
  • 테스트 계층: 누수
  • 중지 ID: 레지스트리
  • 코드 중지: 900NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

가상 예약이 유출되었습니다.

가능한 원인

이 중지는 리소스를 소유하는 동안 가상 예약의 소유자 dll이 동적으로 언로드된 경우에 생성됩니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1  누수  예약 주소입니다.
  • 매개 변수 2 - 할당 스택 추적에 대한 주소입니다. dps <주소를> 실행하여 할당 스택을 봅니다.
  • 매개 변수 3 - 소유자 dll 이름의 주소입니다. du <주소를> 실행하여 dll 이름을 읽습니다.
  • 소유자 dll의 매개 변수 4-Base  입니다. .reload <dll_name> = <address> 를 실행하여 소유자 dll을 다시 로드합니다. 로드되고 언로드된 모듈에 대한 자세한 내용을 보려면 'lm'을 사용합니다.

추가 정보
  • 테스트 계층: 누수
  • 중지 ID: VIRTUAL_RESERVATION
  • 코드 중지: 900NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

BSTR이 유출되었습니다.

가능한 원인

이 중지는 리소스를 소유하는 동안 SysString의 소유자 dll이 동적으로 언로드된 경우에 생성됩니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 유출된 BSTR의 주소입니다. !heap -p -a <주소를> 실행하여 할당에 대한 추가 정보를 가져옵니다.
  • 매개 변수 2 - 할당 스택 추적에 대한 주소입니다. dps <주소를> 실행하여 할당 스택을 봅니다.
  • 매개 변수 3 - 소유자 dll 이름의 주소입니다. du <주소를> 실행하여 dll 이름을 읽습니다.
  • 소유자 dll의 매개 변수 4-Base  입니다. .reload <dll_name> = <address> 를 실행하여 소유자 dll을 다시 로드합니다. 로드되고 언로드된 모듈에 대한 자세한 내용을 보려면 'lm'을 사용합니다.

추가 정보
  • 테스트 계층: 누수
  • ID 중지: SYSSTRING
  • 코드 중지: 900NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

전원 알림이 등록 취소되지 않았습니다.

가능한 원인

이 중지는 dll이 전원 알림에 등록되고 등록을 취소하지 않고 동적으로 언로드된 경우에 생성됩니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 전원 알림 등록의 주소입니다.
  • 등록 스택 추적에 대한 매개 변수 2 - 주소입니다. dps <주소를> 실행하여 할당 스택을 봅니다.
  • 매개 변수 3 - 소유자 dll 이름의 주소입니다. du <주소를> 실행하여 dll 이름을 읽습니다.
  • 소유자 dll의 매개 변수 4-Base  입니다. .reload <dll_name> = <address> 를 실행하여 소유자 dll을 다시 로드합니다. 로드되고 언로드된 모듈에 대한 자세한 내용을 보려면 'lm'을 사용합니다.

추가 정보
  • 테스트 계층: 누수
  • 중지 ID: POWER_NOTIFICATION
  • 코드 중지: 900NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

잠금 중지 세부 정보

스레드는 중요한 섹션을 소유할 수 없습니다.

가능한 원인

이 중지는 스레드(스레드 ID가 parameter1임)가 종료되거나 일시 중단되었거나 중요한 섹션을 보유할 수 없는 상태(작업자 스레드가 작업 항목을 완료한 상태)에 있는 경우 생성됩니다. 현재 스레드가 원인입니다. 이 중지를 디버그하려면 다음 디버거 명령을 사용합니다. $ kb - 현재 스택 추적을 가져옵니다. 현재 스레드가 중요한 섹션의 소유자인 경우 ExitThread를 호출할 수 있습니다. 현재 스레드는 종료하기 전에 중요한 섹션을 해제해야 합니다. 현재 스레드가 TerminateThread 또는 SuspendThread를 호출하는 경우 중요한 섹션을 보유하는 스레드에 대해 이 작업을 수행하면 안 됩니다. $ !cs -s parameter2 - 이 중요한 섹션에 대한 정보를 덤프합니다. $ ln parameter2 - 중요한 섹션의 주소 근처에 기호를 표시합니다. 이렇게 하면 유출된 중요한 섹션을 식별하는 데 도움이 됩니다. $ dps 매개 변수4 - 이 중요한 섹션 초기화에 대한 스택 추적을 덤프합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1  스레드  ID입니다.
  • 매개 변수 2 - 중요 섹션 주소입니다.
  • 매개 변수 3 - 중요 섹션 디버그 정보 주소입니다.
  • 매개 변수 4-Critical   섹션 초기화 스택 추적

추가 정보
  • 테스트 계층: 잠금
  • 중지 ID: EXIT_THREAD_OWNS_LOCK
  • 코드 중지: 200NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

활성 위험 섹션이 포함된 DLL을 언로드합니다.

가능한 원인

이 중지는 DLL에 중요한 섹션이 포함된 전역 변수가 있고 DLL이 언로드되었지만 중요한 섹션이 삭제되지 않은 경우 생성됩니다. 이 중지를 디버그하려면 다음 디버거 명령을 사용합니다. $ du parameter3 - 범인 DLL의 이름을 덤프합니다. $ .reload dllname 또는 .reload dllname = parameter4 - 해당 DLL에 대한 기호를 다시 로드합니다. $ !cs -s parameter1 - 이 중요한 섹션에 대한 덤프 정보입니다. $ ln parameter1 - 중요 섹션의 주소 근처에 기호를 표시합니다. 이렇게 하면 유출된 중요한 섹션을 식별하는 데 도움이 됩니다. $ dps 매개 변수2 - 이 중요한 섹션 초기화에 대한 스택 추적을 덤프합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 중요 섹션 주소입니다.
  • 매개 변수 2 - 중요 섹션 초기화 스택 추적입니다.
  • 매개 변수 3-DLL   이름 주소입니다.
  • 매개 변수 4-DLL   기본 주소입니다.

추가 정보
  • 테스트 계층: 잠금
  • 중지 ID: LOCK_IN_UNLOADED_DLL
  • 코드 중지: 200NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

활성 위험 섹션이 포함된 힙 블록 해제

가능한 원인

이 중지는 힙 할당에 중요한 섹션이 포함되어 있고 할당이 해제되고 중요한 섹션이 삭제되지 않은 경우 생성됩니다. 이 중지를 디버그하려면 다음 디버거 명령을 사용합니다. $ !cs -s parameter1 - 이 중요한 섹션에 대한 덤프 정보입니다. $ ln parameter1 - 중요 섹션의 주소 근처에 기호를 표시합니다. 이렇게 하면 유출된 중요한 섹션을 식별하는 데 도움이 됩니다. $ dps 매개 변수2 - 이 중요한 섹션 초기화에 대한 스택 추적을 덤프합니다. $ parameter3 및 parameter4는 이 힙 블록이 할당된 위치를 이해하는 데 도움이 될 수 있습니다(할당 크기가 중요할 수 있습니다).

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 중요 섹션 주소입니다.
  • 매개 변수 2 - 중요 섹션 초기화 스택 추적입니다.
  • 매개 변수 3 - 힙 블록 주소입니다.
  • 매개 변수 4 - 힙 블록 크기입니다.

추가 정보
  • 테스트 계층: 잠금
  • 중지 ID: LOCK_IN_FREED_HEAP
  • 코드 중지: 200NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

이중 초기화되었거나 손상된 중요 섹션입니다.

가능한 원인

일반적으로 중요한 섹션이 두 번 이상 초기화된 경우 이 중지가 생성됩니다. 이 경우 parameter3 및 parameter4는 이러한 두 초기화에 대한 스택 추적 주소입니다. 중요한 섹션 또는 디버그 정보 구조가 손상된 경우 이 중지를 가져올 수 있는 경우도 있습니다. 이 두 번째 경우 parameter3 및 parameter4가 유효하지 않으며 쓸모가 없는 것일 수 있습니다. 이 중지를 디버그하려면 $ !cs -s -d 매개 변수2 - 이 중요한 섹션에 대한 정보를 덤프합니다. $ ln parameter1 - 중요 섹션의 주소 근처에 기호를 표시합니다. 전역 변수인 경우 중요한 섹션을 식별하는 데 도움이 될 수 있습니다. $ dps parameter3 및 dps parameter4 - 이 중요한 섹션을 초기화하기 위한 두 코드 경로를 식별합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 중요 섹션 주소입니다.
  • 매개 변수 2 - 현재 목록에 있는 디버그 정보 구조의 주소입니다.
  • 매개 변수 3-First   초기화 스택 추적
  • 매개 변수 4 초  초기화 스택 추적

추가 정보
  • 테스트 계층: 잠금
  • 중지 ID: LOCK_DOUBLE_INITIALIZE
  • 코드 중지: 200NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

활성 중요 섹션을 포함하는 사용 가능한 메모리입니다.

가능한 원인

중요한 섹션이 포함된 메모리가 해제되었지만 DeleteCriticalSection을 사용하여 중요한 섹션이 삭제되지 않은 경우 이 중지가 생성됩니다. 이 중지를 디버그하려면 다음 디버거 명령을 사용합니다. $ !cs -s -d parameter2 - 이 중요한 섹션에 대한 덤프 정보입니다. $ dps parameter3 - 이 중요한 섹션을 초기화하기 위한 코드 경로를 식별합니다. 대부분의 경우 잠금 검증 도구는 힙 할당, DLL 범위, 가상 메모리 할당 또는 MapViewOfFile 매핑된 메모리 범위에 포함된 즉시 유출된 중요한 섹션을 검색하고 이러한 경우 다른 중지를 발급합니다. 따라서 이 검증 도구 중지를 위해 남은 사례는 거의 없습니다. 잠금은 커널 모드 코드로 해제된 메모리 범위 또는 VirtualFreeEx와 같은 API에서 해제된 교차 프로세스에 있어야 합니다. 디버거 콘솔에서 'g'를 눌러 이전 중지(예: LOCK_IN_FREED_HEAP 또는 LOCK_IN_UNLOADED_DLL)가 계속된 경우 일반적으로 이 중지가 발생합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 중요 섹션 주소입니다.
  • 매개 변수 2 - 중요 섹션 디버그 정보 주소입니다.
  • 매개 변수 3-Critical   섹션 초기화 스택 추적
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 잠금
  • 중지 ID: LOCK_IN_FREED_MEMORY
  • 코드 중지: 200NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

손상된 위험 섹션입니다.

가능한 원인

이 중지는 중요 섹션의 DebugInfo 필드가 해제된 메모리를 가리키는 경우 생성됩니다. 일반적으로 다른 유효한 DebugInfo 구조체는 활성 중요 섹션 목록에 있습니다. 손상이 없으면 두 포인터가 동일해야 합니다. 이 중지를 디버그하려면 다음 디버거 명령을 사용합니다. $ !cs -s -d parameter3 - 현재 목록에 있는 디버그 정보 구조의 현재 내용을 기반으로 이 중요한 섹션에 대한 정보를 덤프합니다(이 구조는 거의 손상되지 않으므로 일반적으로 이 정보는 신뢰할 수 있습니다). $ !cs -s parameter1 - 중요한 섹션 구조의 현재 내용을 기반으로이 중요한 섹션에 대한 정보를 덤프합니다 (구조가 이미 손상되었으므로 때로는이 정보를 신뢰할 수 없습니다). $ dps 매개 변수4 - 이 중요한 섹션을 초기화하기 위한 코드 경로를 식별합니다. 주소 매개 변수1에서 중요한 섹션을 덤프하고 손상 패턴을 찾습니다. ntdll.dl에 대한 좋은 기호를 사용하여 $ dt ntdll!_RTL_CRITICAL_SECTION LOCK_ADDRESS $ dt ntdll!_RTL_CRITICAL_SECTION_DEBUG DEBUG_ADDRESS 명령을 사용할 수 있습니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 중요 섹션 주소입니다.
  • 매개 변수 2 - 이 중요한 섹션의 디버그 정보 주소가 잘못되었습니다.
  • 매개 변수 3 - 활성 목록에 있는 디버그 정보의 주소입니다.
  • 매개 변수 4 - 초기화 스택 추적입니다.

추가 정보
  • 테스트 계층: 잠금
  • 중지 ID: LOCK_CORRUPTED
  • 코드 중지: 200NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

중요한 섹션 소유자 스레드가 잘못되었습니다.

가능한 원인

이 중지는 현재 컨텍스트에서 소유자 스레드 ID가 잘못된 경우 생성됩니다. 이 중지를 디버그하려면 $ !cs -s parameter1 - 이 중요한 섹션에 대한 정보를 덤프합니다. $ ln parameter1 - 중요 섹션의 주소 근처에 기호를 표시합니다. 이렇게 하면 중요한 섹션을 식별하는 데 도움이 됩니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 중요 섹션 주소입니다.
  • 매개 변수 2  소유  스레드입니다.
  • 매개 변수 3 - 예상 소유 스레드입니다.
  • 매개 변수 4 - 중요 섹션 디버그 정보 주소입니다.

추가 정보
  • 테스트 계층: 잠금
  • 중지 ID: LOCK_INVALID_OWNER
  • 코드 중지: 200NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

중요한 섹션 재귀 수가 잘못되었습니다.

가능한 원인

이 중지는 현재 컨텍스트에서 중요한 섹션 구조의 재귀 수 필드가 잘못된 경우 생성됩니다. 이 중지를 디버그하려면 $ !cs -s parameter1 - 이 중요한 섹션에 대한 정보를 덤프합니다. $ ln parameter1 - 중요 섹션의 주소 근처에 기호를 표시합니다. 이렇게 하면 중요한 섹션을 식별하는 데 도움이 됩니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 중요 섹션 주소입니다.
  • 매개 변수 2 - 재귀 횟수입니다.
  • 매개 변수 3 - 예상 재귀 수입니다.
  • 매개 변수 4 - 중요 섹션 디버그 정보 주소입니다.

추가 정보
  • 테스트 계층: 잠금
  • 중지 ID: LOCK_INVALID_RECURSION_COUNT
  • 코드 중지: 200NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

잘못된 잠금 횟수로 중요한 섹션을 삭제합니다.

가능한 원인

이 중지는 삭제된 경우 또는 중요 섹션이 초기화되지 않은 경우 스레드가 중요한 섹션을 소유하는 경우 생성됩니다. 이 중지를 디버그하려면 $ !cs -s parameter1 - 이 중요한 섹션에 대한 정보를 덤프합니다. 소유 스레드가 0이면 중요한 섹션이 초기화되지 않았습니다. $ ln parameter1 - 중요 섹션의 주소 근처에 기호를 표시합니다. 이렇게 하면 중요한 섹션을 식별하는 데 도움이 됩니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 중요 섹션 주소입니다.
  • 매개 변수 2  잠금  수입니다.
  • 매개 변수 3 - 예상 잠금 수입니다.
  • 매개 변수 4  소유  스레드입니다.

추가 정보
  • 테스트 계층: 잠금
  • 중지 ID: LOCK_INVALID_LOCK_COUNT
  • 코드 중지: 200NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

중요 섹션이 과도하게 릴리스되었거나 손상되었습니다.

가능한 원인

이 중지는 중요한 섹션이 현재 스레드에서 획득한 것보다 더 많은 시간을 해제하는 경우 생성됩니다. 이 중지를 디버그하려면 $ !cs -s parameter1 - 이 중요한 섹션에 대한 정보를 덤프합니다. $ !cs -s -d parameter4 - 이 중요한 섹션에 대한 덤프 정보입니다. $ ln parameter1 - 중요 섹션의 주소 근처에 기호를 표시합니다. 이렇게 하면 중요한 섹션을 식별하는 데 도움이 됩니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 중요 섹션 주소입니다.
  • 매개 변수 2  잠금  수입니다.
  • 매개 변수 3 - 예상 잠금 수입니다.
  • 매개 변수 4 - 중요 섹션 디버그 정보 주소입니다.

추가 정보
  • 테스트 계층: 잠금
  • 중지 ID: LOCK_OVER_RELEASED
  • 코드 중지: 200NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

중요 섹션이 초기화되지 않았습니다.

가능한 원인

이 중지는 중요한 섹션을 초기화하지 않고 사용하거나 삭제한 후에 생성됩니다. 이 중지를 디버그하려면 $ ln parameter1 - 중요한 섹션의 주소 근처에 기호를 표시합니다. 이렇게 하면 중요한 섹션을 식별하는 데 도움이 됩니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 중요 섹션 주소입니다.
  • 매개 변수 2 - 중요 섹션 디버그 정보 주소입니다.
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 잠금
  • 중지 ID: LOCK_NOT_INITIALIZED
  • 코드 중지: 200NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

중요 섹션이 이미 초기화되어 있습니다.

가능한 원인

이 중지는 현재 스레드에서 중요한 섹션을 다시 초기화하는 경우에 생성됩니다. 이 중지를 디버그하려면 $ !cs -s parameter1 또는 !cs -s -d parameter2 - 이 중요한 섹션에 대한 정보를 덤프합니다. $ ln parameter1 - 중요 섹션의 주소 근처에 기호를 표시합니다. 전역 변수인 경우 중요한 섹션을 식별하는 데 도움이 될 수 있습니다. $ dps parameter3 - 이 중요한 섹션의 첫 번째 초기화에 대한 코드 경로를 식별합니다. $ kb - 이 중요한 섹션을 다시 초기화하는 현재 스택 추적을 표시합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 중요 섹션 주소입니다.
  • 매개 변수 2 - 중요 섹션 디버그 정보 주소입니다.
  • 매개 변수 3-First   초기화 스택 추적 NULL이 아닌 경우 dps를 사용하여 덤프
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 잠금
  • 중지 ID: LOCK_ALREADY_INITIALIZED
  • 코드 중지: 200NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

활성 위험 섹션을 포함하는 가상 메모리 해제

가능한 원인

현재 스레드가 활성 위험 섹션이 포함된 메모리 블록에서 VirtualFree를 호출하는 경우 이 중지가 생성됩니다. 애플리케이션은 이 메모리를 해제하기 전에 이 중요한 섹션에서 DeleteCriticalSection을 호출해야 합니다. $ kb - VirtualFree를 호출하는 현재 스택 추적을 표시합니다. 가능한 원인은 VirtualFree를 호출하는 DLL입니다. $ !cs -s parameter1 - 이 중요한 섹션에 대한 덤프 정보입니다. $ dps 매개 변수2 - 이 중요한 섹션의 초기화에 대한 코드 경로를 식별합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 중요 섹션 주소입니다.
  • 매개 변수 2 - 중요 섹션 초기화 스택 추적입니다.
  • 매개 변수 3  메모리  블록 주소입니다.
  • 매개 변수 4  메모리  블록 크기입니다.

추가 정보
  • 테스트 계층: 잠금
  • 중지 ID: LOCK_IN_FREED_VMEM
  • 코드 중지: 200NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

활성 위험 섹션이 포함된 메모리 영역 매핑 해제

가능한 원인

현재 스레드가 활성 위험 섹션이 포함된 메모리 블록에서 UnmapViewOfFile을 호출하는 경우 이 중지가 생성됩니다. 애플리케이션은 이 메모리의 매핑을 해제하기 전에 이 중요한 섹션에서 DeleteCriticalSection을 호출해야 합니다. $ kb - UnmapViewOfFile을 호출하는 현재 스택 추적을 표시합니다. 가능한 원인은 UnmapViewOfFile을 호출하는 DLL입니다. $ !cs -s parameter1 - 이 중요한 섹션에 대한 덤프 정보입니다. $ dps 매개 변수2 - 이 중요한 섹션의 초기화에 대한 코드 경로를 식별합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 중요 섹션 주소입니다.
  • 매개 변수 2 - 중요 섹션 초기화 스택 추적입니다.
  • 매개 변수 3  메모리  블록 주소입니다.
  • 매개 변수 4  메모리  블록 크기입니다.

추가 정보
  • 테스트 계층: 잠금
  • 중지 ID: LOCK_IN_UNMAPPED_MEM
  • 코드 중지: 200NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

현재 스레드는 중요한 섹션을 소유하지 않습니다.

가능한 원인

현재 스레드가 LeaveCriticalSection을 호출하는 경우 이 중지가 생성되지만 내부 검증 도구 부기에서 중요한 섹션을 소유하지 않습니다. parameter2가 0이면 현재 스레드의 버그일 수 있습니다. 입력하지 않은 중요한 섹션을 나가려고 하거나 동일한 중요 섹션에 대해 EnterCriticalSection이라고 하는 것보다 LeaveCriticalSection을 더 많이 호출할 수 있습니다. parameter2가 0이 아니면(음수 정수) 내부 검증 도구 데이터 구조가 손상되었을 수 있습니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 중요 섹션 주소입니다.
  • 매개 변수 2 - 현재 스레드가 소유한 중요한 섹션의 수입니다.
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 잠금
  • 중지 ID: THREAD_NOT_LOCK_OWNER
  • 코드 중지: 200NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

다른 DLL에 비공개인 중요 섹션 사용

가능한 원인

현재 스레드가 다른 DLL 내에 있는 프라이빗 잠금을 사용하려고 하면 이 중지가 생성됩니다. 예를 들어 a.dll ntdll.dll 내에 정의된 중요한 섹션을 입력하려고 합니다. 프라이빗 잠금은 DLL 간에 사용할 수 없습니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 중요 섹션 주소입니다.
  • 매개 변수 2 - 사용되지 않음
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 잠금
  • 중지 ID: LOCK_PRIVATE
  • 코드 중지: 200NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

SRWLock 중지 세부 정보

SRW 잠금이 초기화되지 않았습니다.

가능한 원인

스레드가 초기화되지 않은 SRW 잠금(Param1)을 사용하려고 하면 이 중지가 생성됩니다. $ kb - 현재 스택 추적을 가져옵니다. SRW 잠금이 사용되는 위치입니다. SRW 잠금을 사용하려면 먼저 InitializeSRWLock을 사용하여 초기화해야 합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1-SRW   잠금
  • 매개 변수 2 - 사용되지 않음
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: SRWLock
  • 중지 ID: NOT_INITIALIZED
  • 코드 중지: 250NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

SRW 잠금이 이미 초기화되어 있습니다.

가능한 원인

SRW 잠금(Param1)이 다시 초기화되는 경우 이 중지가 생성됩니다. 다른 스레드에서 SRW 잠금을 적극적으로 사용하는 경우 잠금을 다시 초기화하면 중단 및 크래시를 포함하여 애플리케이션에서 예측할 수 없는 동작이 발생합니다. 초기화 스택 추적은 SRW 잠금이 정적으로 초기화된 경우 획득을 표시할 수 있습니다. $ kb - 현재 스택 추적을 가져옵니다. SRW 잠금이 다시 초기화되는 위치입니다. $ dps Param3 - SRW 잠금 초기화 스택 추적을 가져옵니다. 이 스택 추적은 잠금이 정적으로 초기화된 경우 획득을 표시할 수 있습니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1-SRW   잠금
  • SRW 잠금을 초기화한 스레드의 매개 변수 2-ThreadId  입니다.
  • 초기화 스택 추적의 매개 변수 3 - 주소입니다. dps <주소를> 사용하여 SRW 잠금이 초기화된 위치를 확인합니다.
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: SRWLock
  • 중지 ID: ALREADY_INITIALIZED
  • 코드 중지: 250NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

SRW 잠금의 Acquire-Release가 일치하지 않습니다.

가능한 원인

SRW 잠금(Param1)이 잘못된 릴리스 API로 릴리스되는 경우 이 중지가 생성됩니다. 공유 액세스를 위해 SRW 잠금을 획득하고 전용 릴리스 API를 사용하여 릴리스되는 경우 또는 단독 액세스를 위해 SRW 잠금을 획득했으며 공유 릴리스 API를 사용하여 릴리스 중입니다. 이로 인해 중단 및 충돌을 포함하여 애플리케이션에서 예측할 수 없는 동작이 발생할 수 있습니다. $ kb - 현재 스택 추적을 가져옵니다. 잘못된 API를 사용하여 SRW 잠금이 해제되는 위치입니다. $ dps Param3 - SRW 잠금 획득 스택 추적을 가져옵니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1-SRW   잠금
  • SRW 잠금을 획득한 스레드의 매개 변수 2-ThreadId  입니다.
  • 인수 스택 추적의 매개 변수 3 - 주소입니다. dps <주소를> 사용하여 SRW 잠금이 획득된 위치를 확인합니다.
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: SRWLock
  • 중지 ID: MISMATCHED_ACQUIRE_RELEASE
  • 코드 중지: 250NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

SRW 잠금은 동일한 스레드에서 재귀적으로 획득됩니다.

가능한 원인

이 중지는 동일한 스레드에서 SRW 잠금(Param1)을 재귀적으로 획득하는 경우에 생성됩니다. 이로 인해 교착 상태가 발생하며 스레드가 무기한 차단됩니다. 단독 모드에서 SRW 잠금을 재귀적으로 획득하면 교착 상태가 발생합니다. 공유 모드에서 SRW 잠금을 재귀적으로 획득하면 단독 액세스를 기다리는 스레드가 있을 때 교착 상태가 발생합니다. 아래 예제를 고려하세요. - 스레드 A는 공유 모드에서 SRW 잠금을 획득합니다. 스레드 B는 전용 모드에서 SRW 잠금을 획득하려고 시도하고 대기합니다. 스레드 A는 공유 모드에서 SRW 잠금을 재귀적으로 획득하려고 시도합니다. 단독 웨이터가 없는 한 성공합니다(이 경우 B). SRW 잠금에는 기록기 부족이 없으므로 스레드 A는 스레드 B 뒤에서 대기합니다. 이제 스레드 B는 스레드 A를 기다리고 있으며, 스레드 B가 순환 대기를 유발하여 교착 상태가 되기를 기다리고 있습니다. $ kb - 현재 스택 추적을 가져옵니다. SRW 잠금을 재귀적으로 획득하는 위치입니다. $ dps Param2 - 첫 번째 획득에 대한 스택 추적을 가져옵니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1-SRW   잠금
  • 매개 변수 2 - 첫 번째 획득 스택 추적의 주소입니다. dps <주소를> 사용하여 SRW 잠금이 획득된 위치를 확인합니다.
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: SRWLock
  • 중지 ID: RECURSIVE_ACQUIRE
  • 코드 중지: 250NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

종료되거나 종료되는 스레드는 SRW 잠금을 소유합니다.

가능한 원인

이 중지는 SRW 잠금(Param1)을 소유하는 스레드(Param2)가 종료되거나 종료되는 경우에 생성됩니다. 이로 인해 분리된 SRW 잠금이 발생하며 이 잠금을 획득하려는 스레드는 무기한 차단됩니다. $ kb - 현재 스택 추적을 가져옵니다. 스레드가 종료되거나 종료되는 위치입니다. $ dps Param3 - SRW 잠금 획득 스택 추적을 가져옵니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1-SRW   잠금
  • 종료되거나 종료되는 스레드의 매개 변수 2-ThreadId  입니다.
  • 인수 스택 추적의 매개 변수 3 - 주소입니다. dps <주소를> 사용하여 SRW 잠금이 획득된 위치를 확인합니다.
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: SRWLock
  • 중지 ID: EXIT_THREAD_OWNS_LOCK
  • 코드 중지: 250NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

해제되는 SRW 잠금이 이 스레드에서 획득되지 않았습니다.

가능한 원인

이 중지는 잠금을 획득하지 않은 스레드(Param2)에서 SRW 잠금(Param1)을 해제하는 경우에 생성됩니다. 이는 제대로 실행하기 어렵고 애플리케이션에서 예측할 수 없는 동작으로 이어질 수 있는 잘못된 프로그래밍 사례를 나타냅니다. $ kb - 현재 스택 추적을 가져옵니다. 스레드가 획득하지 않은 SRW 잠금을 해제하는 위치입니다. $ dps Param4 - SRW 잠금 획득 스택 추적을 가져옵니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1-SRW   잠금
  • 매개 변수 2 - 현재 ThreadId입니다.
  • SRW 잠금을 획득한 스레드의 매개 변수 3-ThreadId  입니다.
  • 획득 스택 추적의 매개 변수 4 - 주소입니다. dps <주소를> 사용하여 SRW 잠금이 획득된 위치를 확인합니다.

추가 정보
  • 테스트 계층: SRWLock
  • 중지 ID: INVALID_OWNER
  • 코드 중지: 250NAN
  • 심각도: 경고
  • 일회성 오류: 
  • 오류 보고서: 없음
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

해제되는 메모리에는 활성 SRW 잠금이 포함됩니다.

가능한 원인

해제되는 메모리 주소(Param1)에 여전히 사용 중인 활성 SRW 잠금이 포함된 경우 이 중지가 생성됩니다. 이로 인해 충돌 및 중단을 포함하여 애플리케이션에서 예측할 수 없는 동작이 발생할 수 있습니다. $ kb - 현재 스택 추적을 가져옵니다. 활성 SRW 잠금을 포함하는 메모리가 해제되는 위치입니다. $ dps Param4 - SRW 잠금 획득 스택 추적을 가져옵니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1-SRW   잠금
  • 매개 변수 2 - 해제되는 메모리의 주소입니다.
  • SRW 잠금을 획득한 스레드의 매개 변수 3-ThreadId  입니다.
  • 획득 스택 추적의 매개 변수 4 - 주소입니다. dps <주소를> 사용하여 SRW 잠금이 획득된 위치를 확인합니다.

추가 정보
  • 테스트 계층: SRWLock
  • 중지 ID: IN_FREED_MEMORY
  • 코드 중지: 250NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

언로드되는 DLL에는 활성 SRW 잠금이 포함되어 있습니다.

가능한 원인

이 중지는 언로드 중인 DLL(Param2)에 여전히 사용 중인 활성 SRW 잠금(Param1)이 포함된 경우 생성됩니다. 이로 인해 충돌 및 중단을 포함하여 애플리케이션에서 예측할 수 없는 동작이 발생할 수 있습니다. $ kb - 현재 스택 추적을 가져옵니다. 활성 SRW 잠금을 포함하는 DLL이 언로드되는 위치입니다. $ du Param2 - 언로드되는 DLL의 이름을 찾습니다. $ dps Param4 - SRW 잠금 획득 스택 추적을 가져옵니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1-SRW   잠금
  • 매개 변수 2 -  언로드 중인 DLL 이름의 주소입니다. du <주소를> 사용하여 이름을 확인합니다.
  • SRW 잠금을 획득한 스레드의 매개 변수 3-ThreadId  입니다.
  • 획득 스택 추적의 매개 변수 4 - 주소입니다. dps <주소를> 사용하여 SRW 잠금이 획득된 위치를 확인합니다.

추가 정보
  • 테스트 계층: SRWLock
  • 중지 ID: IN_UNLOADED_DLL
  • 코드 중지: 250NAN
  • 심각도: 경고
  • 일회성 오류: 
  • 오류 보고서: 없음
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

메모리 중지 세부 정보

잘못된 크기 또는 시작 주소로 가상 메모리 블록을 해제합니다.

가능한 원인

이 중지는 앱 검증 도구가 잘못된 시작 주소 또는 메모리 할당 크기가 있는 VirtualFree 또는 DLL 언로드를 검색하는 경우 생성됩니다. DLL 언로드의 경우 로드된 DLL 목록 내의 메모리 손상이 발생할 수 있습니다. 이 중지를 디버그하려면 현재 스택 추적 및 해제할 메모리 주소 및 크기를 확인하고 유효하지 않은 이유를 확인합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1  할당  기본 주소입니다.
  • 매개 변수 2  메모리  영역 크기입니다.
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: INVALID_FREEMEM
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

잘못된 가상 할당 호출입니다.

가능한 원인

이 중지는 앱 검증 도구가 잘못된 시작 주소 또는 메모리 할당 크기가 있는 VirtualAlloc 호출을 검색하는 경우 생성됩니다. 이 중지를 디버그하려면 현재 스택 추적(kb)과 할당될 메모리 주소 및 크기를 확인하고 잘못된 이유를 확인합니다.

Application Verifier에서 표시하는 정보
  • 할당 기준 주소에 대한 매개 변수 1  포인터 입니다.
  • 메모리 영역 크기에 대한 매개 변수 2  포인터 입니다.
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: INVALID_ALLOCMEM
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

잘못된 맵 보기 호출입니다.

가능한 원인

이 중지는 앱 검증 도구가 잘못된 기본 주소 또는 매핑 크기로 MapViewOfFile 호출을 검색하는 경우 생성됩니다. 이 중지를 디버그하려면 현재 스택 추적(kb) 및 매핑할 메모리 주소 및 크기를 확인하고 잘못된 이유를 확인합니다.

Application Verifier에서 표시하는 정보
  • 기본 주소 매핑에 대한 매개 변수 1  포인터 입니다.
  • 크기를 볼 매개 변수 2  포인터 입니다.
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: INVALID_MAPVIEW
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

잘못된 주소를 검색합니다.

가능한 원인

이 중지는 앱 검증 도구가 검색할 메모리 버퍼에 대해 잘못된 주소(예: 일반 사용자 모드 주소 대신 커널 모드 주소)가 있는 IsBadXXXPtr 호출을 검색하는 경우 생성됩니다. 이 중지를 디버그하려면 현재 스택 추적(kb)을 살펴보고 IsBadXXXPtr 함수의 호출자가 잘못된 주소로 끝난 이유를 확인합니다. 주소가 일반 가짜(예: 초기화되지 않은 포인터)인 경우가 많습니다. MSDN 라이브러리는 애플리케이션이 IsBadXXXPtr API를 사용하지 않아야 하는 몇 가지 이유를 나열합니다. 선점형 멀티태스킹 환경에서는 일부 다른 스레드가 테스트 중인 메모리에 대한 프로세스의 액세스를 변경할 수 있습니다. 잠재적으로 잘못된 포인터를 역참조하면 다른 스레드에서 스택 확장을 사용하지 않도록 설정할 수 있습니다. 스택 확장을 사용하지 않도록 설정한 경우 스택이 소진되는 스레드는 팝업 오류 창이나 진단 정보 없이 부모 프로세스가 즉시 종료됩니다. 프로세스의 스레드는 다른 스레드가 필요로 하는 메모리를 확보하지 않는 방식으로 협력해야 합니다. 이 함수를 사용하면 이 작업을 수행할 필요가 없습니다. 이 작업이 수행되지 않으면 애플리케이션이 예측할 수 없는 방식으로 실패할 수 있습니다. 이러한 모든 이유로 인해 이러한 API를 사용하지 않는 것이 좋습니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 시작 주소입니다.
  • 매개 변수 2  메모리  블록 크기입니다.
  • 매개 변수 3 - 잘못된 주소입니다.
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: PROBE_INVALID_ADDRESS
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

사용 가능한 메모리를 검색합니다.

가능한 원인

이 중지는 앱 검증 도구가 사용 가능한 메모리 할당에 대한 IsBadXXXPtr 호출을 검색하는 경우 생성됩니다. 이는 다른 경우에 이 메모리가 다른 할당에 이미 재사용되었을 수 있기 때문에 매우 나쁩니다. 현재 코드 경로(kb)는 해당 메모리를 소유하지 않으므로 다른 사람의 메모리가 손상되어 비참한 결과를 초래할 수 있습니다. 이 중지를 디버그하려면 현재 스택 추적(kb)을 살펴보고 IsBadXXXPtr 함수의 호출자가 사용 가능한 메모리를 검색하게 된 이유를 확인합니다. 주소는 일반 가짜(예: 초기화되지 않은 포인터) 또는 이미 해제된 메모리일 수 있습니다. VirtualFree 또는 UnmapViewOfFile API 중 하나에서 메모리를 이미 해제한 경우 '!avrf -vs -a parameter3'는 해당 주소를 할당/해제한 코드 경로의 스택 추적 로그를 검색하고 사용 가능한 경우 이러한 스택 추적을 표시합니다. 이 메모리를 해제한 스택 추적이 표시될 수 있습니다. 메모리가 이미 해제된 힙 할당인 경우가 많습니다. 이러한 가능성을 검사 위해 '!avrf -hp -a parameter3'는 해당 주소를 힙에서/해제한 코드 경로의 스택 추적 로그를 검색하고 사용 가능한 경우 이러한 스택 추적을 표시합니다. MSDN 라이브러리는 애플리케이션이 IsBadXXXPtr API를 사용하지 않아야 하는 몇 가지 이유를 나열합니다. 선점형 멀티태스킹 환경에서는 일부 다른 스레드가 테스트 중인 메모리에 대한 프로세스의 액세스를 변경할 수 있습니다. 잠재적으로 잘못된 포인터를 역참조하면 다른 스레드에서 스택 확장을 사용하지 않도록 설정할 수 있습니다. 스택 확장을 사용하지 않도록 설정한 경우 스택이 소진되는 스레드는 팝업 오류 창이나 진단 정보 없이 부모 프로세스가 즉시 종료됩니다. 프로세스의 스레드는 다른 스레드가 필요로 하는 메모리를 확보하지 않는 방식으로 협력해야 합니다. 이 함수를 사용하면 이 작업을 수행할 필요가 없습니다. 이 작업이 수행되지 않으면 애플리케이션이 예측할 수 없는 방식으로 실패할 수 있습니다. 이러한 모든 이유로 인해 이러한 API를 사용하지 않는 것이 좋습니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 시작 주소입니다.
  • 매개 변수 2  메모리  블록 크기입니다.
  • 매개 변수 3 - 사용 가능한 메모리 페이지의 주소입니다.
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: PROBE_FREE_MEM
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

가드 페이지를 검색합니다.

가능한 원인

이 중지는 앱 검증 도구가 하나 이상의 GUARD_PAGE 포함하는 메모리 할당에 대한 IsBadXXXPtr 호출을 검색하는 경우 생성됩니다. 이 GUARD_PAGE 스레드의 현재 스택 끝일 수 있으므로 매우 나쁩니다. MSDN 라이브러리에 설명된 대로: 잠재적으로 잘못된 포인터를 역참조하면 다른 스레드에서 스택 확장을 사용하지 않도록 설정할 수 있습니다. 스택 확장을 사용하지 않도록 설정한 경우 스택이 소진되는 스레드는 팝업 오류 창이나 진단 정보 없이 부모 프로세스가 즉시 종료됩니다. 이 중지를 디버그하려면 현재 스택 추적(kb)을 살펴보고 IsBadXXXPtr 함수의 호출자가 GUARD_PAGE 검색한 이유를 확인합니다. MSDN 라이브러리는 애플리케이션이 IsBadXXXPtr API를 사용하지 않아야 하는 몇 가지 이유를 나열합니다. 선점형 멀티태스킹 환경에서는 일부 다른 스레드가 테스트 중인 메모리에 대한 프로세스의 액세스를 변경할 수 있습니다. 잠재적으로 잘못된 포인터를 역참조하면 다른 스레드에서 스택 확장을 사용하지 않도록 설정할 수 있습니다. 스택 확장을 사용하지 않도록 설정한 경우 스택이 소진되는 스레드는 팝업 오류 창이나 진단 정보 없이 부모 프로세스가 즉시 종료됩니다. 프로세스의 스레드는 다른 스레드가 필요로 하는 메모리를 확보하지 않는 방식으로 협력해야 합니다. 이 함수를 사용하면 이 작업을 수행할 필요가 없습니다. 이 작업이 수행되지 않으면 애플리케이션이 예측할 수 없는 방식으로 실패할 수 있습니다. 이러한 모든 이유로 인해 이러한 API를 사용하지 않는 것이 좋습니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 시작 주소입니다.
  • 매개 변수 2  메모리  블록 크기입니다.
  • 매개 변수 3 - 가드 페이지의 주소입니다.
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: PROBE_GUARD_PAGE
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

NULL 주소를 검색합니다.

가능한 원인

이 중지는 앱 검증 도구가 NULL 주소를 사용하여 IsBadXXXPtr 호출을 검색하는 경우 생성됩니다. 이 중지를 디버그하려면 현재 스택 추적(kb)을 살펴보고 IsBadXXXPtr 함수의 호출자가 NULL 주소로 끝난 이유를 확인합니다. 이는 일반적으로 메모리 할당 함수 중 하나의 반환 값을 검사 않는 사람의 표시입니다. 예를 들어 아래 코드가 잘못되었습니다. int 기본(void) { PVOID p; p = malloc(1024); 사용(p); return 0; } void Use (PVOID p) { if (IsBadReadPtr (p)) { return; } // // p는 여기에서 사용하기에 안전합니다. } 이 코드는 다음과 같이 다시 작성해야 합니다. int 기본 (void) { PVOID p; p = malloc (1024); if (NULL == p)) { return -1; } 사용(p); return 0; } void Use (PVOID p) { // // p는 여기에서 사용하기에 안전합니다. } MSDN 라이브러리는 애플리케이션이 IsBadXXXPtr API를 사용하지 않아야 하는 몇 가지 이유를 나열합니다. 선점형 멀티태스킹 환경에서는 다른 스레드가 테스트 중인 메모리에 대한 프로세스의 액세스를 변경할 수 있습니다. 잠재적으로 잘못된 포인터를 역참조하면 다른 스레드에서 스택 확장을 사용하지 않도록 설정할 수 있습니다. 스택 확장을 사용하지 않도록 설정한 경우 스택이 소진되는 스레드는 팝업 오류 창이나 진단 정보 없이 부모 프로세스가 즉시 종료됩니다. 프로세스의 스레드는 다른 스레드가 필요로 하는 메모리를 확보하지 않는 방식으로 협력해야 합니다. 이 함수를 사용하면 이 작업을 수행할 필요가 없습니다. 이 작업이 수행되지 않으면 애플리케이션이 예측할 수 없는 방식으로 실패할 수 있습니다. 이러한 모든 이유로 인해 이러한 API를 사용하지 않는 것이 좋습니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 사용되지 않음
  • 매개 변수 2 - 사용되지 않음
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: PROBE_NULL
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

시작 주소 또는 크기가 잘못된 메모리 블록을 검색합니다.

가능한 원인

이 중지는 앱 검증 도구가 잘못된 시작 주소(예: 일반 사용자 모드 주소 대신 커널 모드 주소)가 있는 IsBadXXXPtr 호출을 검색하거나 검색할 메모리 버퍼의 크기가 잘못된 경우 생성됩니다. 이 중지를 디버그하려면 현재 스택 추적(kb)을 살펴보고 IsBadXXXPtr 함수의 호출자가 잘못된 주소 또는 크기로 끝난 이유를 확인합니다. 주소 또는 크기가 일반 가짜(예: 초기화되지 않은 변수)인 경우가 많습니다. MSDN 라이브러리는 애플리케이션이 IsBadXXXPtr API를 사용하지 않아야 하는 몇 가지 이유를 나열합니다. 선점형 멀티태스킹 환경에서는 일부 다른 스레드가 테스트 중인 메모리에 대한 프로세스의 액세스를 변경할 수 있습니다. 잠재적으로 잘못된 포인터를 역참조하면 다른 스레드에서 스택 확장을 사용하지 않도록 설정할 수 있습니다. 스택 확장을 사용하지 않도록 설정한 경우 스택이 소진되는 스레드는 팝업 오류 창이나 진단 정보 없이 부모 프로세스가 즉시 종료됩니다. 프로세스의 스레드는 다른 스레드가 필요로 하는 메모리를 확보하지 않는 방식으로 협력해야 합니다. 이 함수를 사용하면 이 작업을 수행할 필요가 없습니다. 이 작업이 수행되지 않으면 애플리케이션이 예측할 수 없는 방식으로 실패할 수 있습니다. 이러한 모든 이유로 인해 이러한 API를 사용하지 않는 것이 좋습니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 시작 주소입니다.
  • 매개 변수 2  메모리  블록 크기입니다.
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: PROBE_INVALID_START_OR_SIZE
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

잘못된 크기 또는 시작 주소로 DLL을 언로드합니다.

가능한 원인

이 중지는 앱 검증 도구가 잘못된 시작 주소 또는 DLL 메모리 범위의 크기가 있는 DLL 언로드를 검색하는 경우 생성됩니다. 이는 내부 ntdll.dll 로드된 DLL 목록 내의 메모리 손상을 의미합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1-DLL   메모리 기본 주소입니다.
  • 매개 변수 2-DLL   메모리 범위 크기입니다.
  • 매개 변수 3-DLL   이름 주소입니다. du를 사용하여 덤프합니다.
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: INVALID_DLL_RANGE
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

현재 스레드의 스택 주소 범위 내에서 메모리 블록을 해제합니다.

가능한 원인

이 중지는 앱 검증 도구가 현재 스레드 스택(!)의 일부인 메모리 블록에 대한 VirtualFree를 검색하는 경우 생성됩니다. 이 중지를 디버그하려면 현재 스택 추적(kb)을 살펴보고 VirtualFree라는 함수가 메모리 블록이 동적으로 할당되거나 매핑되었지만 실제로 스택에서 할당된 메모리인 이유를 이해하려고 합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1  할당  기본 주소입니다.
  • 매개 변수 2  메모리  영역 크기입니다.
  • 매개 변수 3 - 스택 낮은 제한 주소입니다.
  • 매개 변수 4 - 스택 높은 제한 주소입니다.

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: FREE_THREAD_STACK_MEMORY
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

VirtualFree 작업에 대한 잘못된 FreeType 매개 변수입니다.

가능한 원인

이 중지는 앱 검증 도구가 FreeType 매개 변수에 대한 잘못된 값으로 VirtualFree를 검색하는 경우 생성됩니다. 이 매개 변수에 허용되는 두 값은 MEM_DECOMMIT MEM_RELEASE. VirtualFree가 이 두 값을 제외한 다른 값으로 호출되면 VirtualFree는 메모리를 해제하지 못합니다. 이 중지를 디버그하려면 현재 스택 추적(kb)을 확인합니다. VirtualFree 호출자가 원인일 수 있습니다.

Application Verifier에서 표시하는 정보
  • 애플리케이션에서 사용하는 매개 변수 1 - 잘못된 값입니다.
  • 매개 변수 2 - 예상 올바른 값 1입니다.
  • 매개 변수 3 - 예상 올바른 값 2.
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: INVALID_FREE_TYPE
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

이미 사용 가능한 가상 메모리 블록을 해제하려고 합니다.

가능한 원인

이 중지는 앱 검증 도구가 이미 무료인 주소에 대한 VirtualFree를 검색하는 경우 생성됩니다. 이 중지를 디버그하려면 현재 스택 추적(kb)을 살펴보고 메모리가 이미 사용 가능한 이유를 확인하지만 애플리케이션에서 다시 해제하려고 합니다. '!avrf -vs -a parameter1'은 해당 주소를 할당/해제한 코드 경로의 스택 추적 로그를 검색하고 사용 가능한 경우 이러한 스택 추적을 표시합니다. 이 메모리를 해제한 스택 추적이 표시될 수 있습니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1  메모리  블록 주소입니다.
  • 매개 변수 2 - 사용되지 않음
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: MEM_ALREADY_FREE
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

virtualFree(MEM_RELEASE) 작업에 대한 잘못된 크기 매개 변수입니다.

가능한 원인

이 중지는 앱 검증 도구가 dwSize 매개 변수의 값이 0이 아닌 VirtualFree(MEM_RELEASE)를 검색하는 경우 생성됩니다. MEM_RELEASE 사용하는 경우 이 매개 변수에 허용되는 유일한 값은 0입니다. VirtualFree가 0을 제외한 다른 값으로 호출되면 VirtualFree는 메모리를 해제하지 못합니다. 이 중지를 디버그하려면 현재 스택 추적(kb)을 확인합니다. VirtualFree 호출자가 원인일 수 있습니다.

Application Verifier에서 표시하는 정보
  • 애플리케이션에서 사용하는 매개 변수 1 - 잘못된 크기입니다.
  • 매개 변수 2 - 올바른 크기(0)가 필요합니다.
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: INVALID_FREE_SIZE
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

DLL 진입점 루틴에서 예기치 않은 예외가 발생했습니다.

가능한 원인

DLL의 진입점(DllMain) 함수가 예외를 발생시키는 경우 이 중지가 생성됩니다. 이것이 나쁜 이유 중 하나는 DllMain(DLL_PROCESS_ATTACH)이 예외를 발생시키는 경우 Windows DLL 로더가 다음을 수행합니다. - 예외를 Catch하고 숨깁니다. - DllMain(DLL_PROCESS_DETACH)을 호출하지 않고 DLL을 언로드합니다. 따라서 대부분의 경우 DLL은 이미 일부 리소스를 할당한 다음 예외를 발생시켰으며 DllMain(DLL_PROCESS_DETACH)에서 이러한 리소스를 해제할 기회가 없습니다. 이 중지를 디버그하려면 $ du parameter1 - DLL 이름을 표시합니다. $ .exr parameter2 - 예외 정보를 표시합니다. $ .cxr parameter3 다음에 kb - 예외가 발생한 시간에 대한 예외 컨텍스트 정보 및 스택 추적을 표시합니다. $ parameter4는 내부 검증 도구 구조의 주소이며 대부분의 검증 도구 사용자에게 아무 의미가 없습니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1-DLL   이름(du를 사용하여 덤프).
  • 매개 변수 2 - 예외 레코드입니다. .exr을 사용하여 표시합니다.
  • 매개 변수 3  컨텍스트  레코드입니다. .cxr를 사용하여 표시합니다.
  • 매개 변수 4  검증  도구 dll 설명자

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: DLL_UNEXPECTED_EXCEPTION
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

스레드 함수에서 예기치 않은 예외가 발생했습니다.

가능한 원인

스레드 함수가 예외를 발생시키는 경우 이 중지가 생성됩니다. 전체 프로세스가 종료되기 때문에 이것은 나쁘다. 이 중지를 디버그하려면 $ parameter1이 예외 유형에 중요할 수 있습니다. 예를 들어 C0000005 예외 코드는 액세스 위반을 의미합니다. $ .exr parameter2 - 예외 정보를 표시합니다. $ .cxr parameter3 다음에 kb - 예외 컨텍스트 정보를 표시합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1  예외  코드입니다.
  • 매개 변수 2 - 예외 레코드입니다. .exr을 사용하여 표시합니다.
  • 매개 변수 3  컨텍스트  레코드입니다. .cxr를 사용하여 표시합니다.
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: THREAD_UNEXPECTED_EXCEPTION
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

메모리를 검색하는 동안 예기치 않은 예외가 발생했습니다.

가능한 원인

IsBadXXXPtr 호출 중에 예외가 발생하면 이 중지가 생성됩니다. 즉, 검색하는 메모리 버퍼에는 실제로 호출자가 가정한 보호가 없거나 메모리가 이미 해제된 것 등이 있습니다. IsBadXXXPtr API를 사용하지 않는 이유에 대한 자세한 예제는 다른 중지 코드(PROBE_INVALID_ADDRESS, PROBE_FREE_MEM, PROBE_GUARD_PAGE, PROBE_NULL, PROBE_INVALID_START_OR_SIZE)에 대한 위의 설명을 참조하세요. 이 중지를 디버그하려면 : $ parameter1은 일반적으로 C0000005 액세스 위반을 의미합니다. $ .exr parameter2 - 예외 정보를 표시합니다. $ .cxr parameter3 다음에 kb - 예외가 발생한 시간에 예외 컨텍스트 정보 및 스택 추적을 표시합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1  예외  코드입니다.
  • 매개 변수 2 - 예외 레코드입니다. .exr을 사용하여 표시합니다.
  • 매개 변수 3  컨텍스트  레코드입니다. .cxr를 사용하여 표시합니다.
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: PROBE_UNEXPECTED_EXCEPTION
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

NULL 주소를 다시 설정하려고 합니다.

가능한 원인

이 중지는 앱 검증 도구가 NULL 첫 번째 매개 변수를 사용하여 MEM_RESET(VirtualFree) 호출을 검색하는 경우 생성됩니다. MEM_RESET 이미 할당된 메모리에만 사용해야 하므로 이 경우 NULL은 유효한 첫 번째 매개 변수가 아닙니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 사용되지 않음
  • 매개 변수 2 - 사용되지 않음
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: INVALID_MEM_RESET
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

현재 스레드의 스택 주소 범위 내에서 힙 메모리 블록을 해제합니다.

가능한 원인

이 중지는 앱 검증 도구가 현재 스레드 스택(!)의 일부인 메모리 블록에 대해 HeapFree를 검색하는 경우 생성됩니다. 이 중지를 디버그하려면 현재 스택 추적(kb)을 살펴보고 HeapFree라는 함수가 메모리 블록이 동적으로 할당되거나 매핑되었지만 실제로는 스택에서 할당된 메모리라고 생각한 이유를 이해하려고 합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1  할당  기본 주소입니다.
  • 매개 변수 2  메모리  영역 크기입니다.
  • 매개 변수 3 - 스택 낮은 제한 주소입니다.
  • 매개 변수 4 - 스택 높은 제한 주소입니다.

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: FREE_THREAD_STACK_MEMORY_AS_HEAP
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

현재 스레드의 스택 주소 범위 내에서 메모리 영역 매핑 해제

가능한 원인

이 중지는 앱 검증 도구가 현재 스레드 스택(!)의 일부인 메모리 블록에 대해 UnmapViewOfFile을 검색하는 경우 생성됩니다. 이 중지를 디버그하려면 현재 스택 추적(kb)을 살펴보고 UnmapViewOfFile을 호출한 함수가 메모리 블록이 동적으로 할당되거나 매핑되었지만 실제로 스택에서 할당된 메모리라고 생각한 이유를 이해하려고 합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1  할당  기본 주소입니다.
  • 매개 변수 2  메모리  영역 크기입니다.
  • 매개 변수 3 - 스택 낮은 제한 주소입니다.
  • 매개 변수 4 - 스택 높은 제한 주소입니다.

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: FREE_THREAD_STACK_MEMORY_AS_MAP
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

잘못된 RTL_RESOURCE 주소입니다.

가능한 원인

이 중지는 애플리케이션이 NULL 또는 다른 잘못된 주소(예: 커널 모드 주소)를 유효한 개체의 주소로 사용하려는 경우 생성됩니다. RtlInitializeResource(NULL)는 이러한 종류의 검증 도구 중지를 트리거하는 잘못된 API 호출입니다. param1은 잘못된 주소가 사용되고 범인은 스택 추적에 있습니다(kb로 표시).

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 주소입니다.
  • 매개 변수 2 - 사용되지 않음
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: INVALID_RESOURCE_ADDRESS
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

중요한 섹션 주소가 잘못되었습니다.

가능한 원인

이 중지는 애플리케이션이 NULL 또는 다른 잘못된 주소(예: 커널 모드 주소)를 유효한 개체의 주소로 사용하려는 경우 생성됩니다. NULL(EnterCriticalSection)은 이러한 종류의 검증 도구 중지를 트리거하는 잘못된 API 호출입니다. param1은 잘못된 주소가 사용되고 범인은 스택 추적에 있습니다(kb로 표시).

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 주소입니다.
  • 매개 변수 2 - 사용되지 않음
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: INVALID_CRITSECT_ADDRESS
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

실행 불가능한 메모리에서 코드를 실행하려고 시도합니다.

가능한 원인

애플리케이션이 실행 불가능하거나 무료인 주소에서 코드를 실행하려고 하면 이 중지가 생성됩니다. 이 중지를 디버그하려면 : $ u 매개 변수2 - 범인 코드의 어셈블을 해제하려면 $ .exr parameter3 - 예외 정보를 표시합니다. $ .cxr parameter4 다음에 kb - 예외가 발생한 시간에 대한 예외 컨텍스트 정보 및 스택 추적을 표시합니다.

Application Verifier에서 표시하는 정보
  • 액세스 중인 매개 변수 1 - 주소입니다.
  • 잘못된 액세스를 수행하는 매개 변수 2  코드 입니다.
  • 매개 변수 3  예외  레코드입니다. .exr을 사용하여 표시합니다.
  • 매개 변수 4  컨텍스트  레코드입니다. .cxr를 사용하여 표시합니다.

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: THREAD_UNEXPECTED_EXCEPTION_CODE
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

출력 버퍼를 초기화하는 동안 예기치 않은 예외가 발생했습니다.

가능한 원인

Win32 또는 CRT API에 대한 출력 매개 변수로 지정된 버퍼를 초기화하는 동안 예외가 발생하는 경우 이 중지가 생성됩니다. 이는 일반적으로 지정된 출력 버퍼 크기가 올바르지 않음을 의미합니다. 이 중지를 디버그하려면 $ .exr parameter3 - 예외 정보를 표시합니다. $ .cxr parameter4 다음에 kb - 예외가 발생한 시간에 예외 컨텍스트 정보 및 스택 추적을 표시합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 버퍼 시작 주소입니다.
  • 매개 변수 2  버 퍼 크기입니다.
  • 매개 변수 3  예외  레코드입니다. .exr을 사용하여 표시합니다.
  • 매개 변수 4  컨텍스트  레코드입니다. .cxr를 사용하여 표시합니다.

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: OUTBUFF_UNEXPECTED_EXCEPTION
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

힙 블록 크기를 찾으려고 할 때 예기치 않은 예외가 발생했습니다.

가능한 원인

해제 중인 힙 블록에 대해 HeapSize를 호출하는 동안 예외가 발생하는 경우 이 중지가 생성됩니다. 이는 일반적으로 지정된 힙 블록 주소가 잘못되었거나 힙이 손상되었음을 의미합니다. 이 중지를 디버그하려면 $ .exr parameter3 - 예외 레코드를 표시합니다. $ .cxr parameter4 다음에 kb - 예외가 발생한 시간에 예외 컨텍스트 정보 및 스택 추적을 표시합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 해제 중인 힙 블록의 주소입니다.
  • 매개 변수 2 - 힙 핸들입니다.
  • 매개 변수 3  예외  레코드입니다. .exr을 사용하여 표시합니다.
  • 매개 변수 4  컨텍스트  레코드입니다. .cxr를 사용하여 표시합니다.

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: SIZE_HEAP_UNEXPECTED_EXCEPTION
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

잘못된 시작 주소로 메모리 블록을 해제합니다.

가능한 원인

이 중지는 페이지 영역이 예약되었을 때 VirtualAlloc 또는 VirtualAllocEx 함수에서 반환한 기본 주소가 아닌 lpAddress 매개 변수를 사용하여 MEM_RELEASE(VirtualFree)를 호출하는 경우 생성됩니다. 이 중지를 디버그하려면 $ kb - VirtualFree를 호출하는 현재 스택 추적을 표시합니다. 가능한 원인은 VirtualFree를 호출하는 DLL입니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 해제되는 메모리 블록의 주소입니다.
  • 매개 변수 2 - 올바른 메모리 블록 주소가 필요합니다.
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: INVALID_FREEMEM_START_ADDRESS
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

잘못된 시작 주소를 사용하여 메모리 블록 매핑을 해제합니다.

가능한 원인

이 중지는 프로그램이 MapViewOfFile 또는 MapViewOfFileEx 함수에 대한 이전 호출에서 반환한 값과 동일하지 않은 lpBaseAddress 매개 변수를 사용하여 UnmapViewOfFile을 호출하는 경우 생성됩니다. 이 중지를 디버그하려면 $ kb - UnmapViewOfFile을 호출하는 현재 스택 추적을 표시합니다. 가능한 원인은 UnmapViewOfFile을 호출하는 DLL입니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 매핑 해제 중인 메모리 블록의 주소입니다.
  • 매개 변수 2 - 올바른 메모리 블록 주소가 필요합니다.
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: INVALID_UNMAPVIEW_START_ADDRESS
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

threadpool 콜백 함수에서 예기치 않은 예외가 발생했습니다.

가능한 원인

스레드 풀 스레드의 콜백 함수가 예외를 발생시키는 경우 이 중지가 생성됩니다. 이 중지를 디버그하려면 $ parameter1이 예외 유형에 중요할 수 있습니다. 예를 들어 C0000005 예외 코드는 액세스 위반을 의미합니다. $ .exr parameter2 - 예외 정보를 표시합니다. $ .cxr parameter3 뒤에 kb - 예외 컨텍스트 정보를 표시합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 예외 코드
  • 매개 변수 2 - 예외 레코드입니다. .exr을 사용하여 표시
  • 매개 변수 3  컨텍스트  레코드입니다. .cxr를 사용하여 표시
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: THREADPOOL_UNEXPECTED_EXCEPTION
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

실행 불가능한 메모리의 코드

가능한 원인

애플리케이션이 실행 불가능하거나 무료인 주소에서 코드를 실행하려고 하면 이 중지가 생성됩니다. 이 중지를 디버그하려면 : $ u parameter2 - 원인 코드 $ .exr 매개 변수3의 어셈블을 해제하려면 예외 정보 $ .cxr parameter4 다음에 kb를 표시하여 예외 컨텍스트 정보와 예외가 발생한 시간에 대한 스택 추적을 표시합니다.

Application Verifier에서 표시하는 정보
  • 액세스 중인 매개 변수 1 - 주소
  • 잘못된 액세스를 수행하는 매개 변수 2   코드
  • 매개 변수 3  예외  레코드입니다. .exr을 사용하여 표시합니다.
  • 매개 변수 4  컨텍스트  레코드입니다. .cxr를 사용하여 표시합니다.

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: THREADPOOL_UNEXPECTED_EXCEPTION_CODE
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

실행 파일 힙 만들기

가능한 원인

애플리케이션이 실행 파일 힙을 만드는 경우 이 중지가 생성됩니다. 이는 보안 위험이 될 수 있습니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 사용되지 않음
  • 매개 변수 2 - 사용되지 않음
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: EXECUTABLE_HEAP
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

실행 파일 메모리 할당

가능한 원인

애플리케이션이 실행 가능한 메모리를 할당하는 경우 이 중지가 생성됩니다. 이는 보안 위험이 될 수 있습니다.

Application Verifier에서 표시하는 정보
  • 호출자가 지정한 매개 변수 1  페이지 보호입니다.
  • 매개 변수 2 - 사용되지 않음
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 메모리
  • 중지 ID: EXECUTABLE_MEMORY
  • 중지 코드: 600NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

TLS 중지 세부 정보

해제되지 않은 TLS 인덱스를 할당한 DLL을 언로드합니다.

가능한 원인

TLS 인덱스를 할당한 DLL이 해당 TLS 인덱스를 해제하기 전에 언로드되는 경우 이 중지가 생성됩니다. 이 중지를 디버그하려면 $ du parameter3 - 범인 DLL의 이름을 표시합니다. $ .reload xxx.dll=parameter4 - 원인 DLL에 대한 기호를 다시 로드합니다(필요한 경우). xxx.dll 위 단계에 표시된 DLL의 이름입니다. $ u 매개 변수2 - TLS를 할당한 코드를 디스어셈블합니다. 이는 TLS를 할당했지만 DLL이 언로드되기 전에 해제하지 않은 함수를 가리킵니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1-TLS   인덱스
  • 매개 변수 2 - 이 TLS 인덱스를 할당한 코드의 주소입니다.
  • 매개 변수 3-DLL   이름 주소입니다. du를 사용하여 덤프합니다.
  • 매개 변수 4-DLL   기본 주소입니다.

추가 정보
  • 테스트 계층: TLS
  • 중지 ID: TLS_LEAK
  • 코드 중지: 350NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

손상된 검증 도구 TLS 구조체입니다.

가능한 원인

이 중지는 스레드에 대한 TLS 슬롯의 상태를 저장하는 데 사용되는 내부 검증 도구 구조가 손상된 경우 생성됩니다. 프로세스에서 일부 임의 손상으로 인해 발생할 가능성이 매우 높습니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1-TEB   주소입니다.
  • 매개 변수 2 - 예상 TEB 주소입니다.
  • 매개 변수 3 - 스레드 ID입니다.
  • 매개 변수 4 - 예상 스레드 ID입니다.

추가 정보
  • 테스트 계층: TLS
  • 중지 ID: CORRUPTED_TLS
  • 코드 중지: 350NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

잘못된 TLS 인덱스 사용

가능한 원인

잘못된 TLS 인덱스를 사용하는 경우 이 중지가 생성됩니다. 대부분의 경우 TlsFree를 호출할 때 코드가 이 인덱스를 계속 사용하고 있기 때문입니다. 스레드 풀 스레드의 예는 다음과 같습니다. T1: Dll 로드 및 TlsAlloc T1: 큐 콜백 T1: 건너뛴 대기/취소된 콜백 T1: TlsFree T2: 콜백 실행 및 호출 TlsSetValue T1: Dll 언로드

Application Verifier에서 표시하는 정보
  • 매개 변수 1-TLS   인덱스
  • 매개 변수 2 - 사용되지 않음
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: TLS
  • 중지 ID: INVALID_TLS_INDEX
  • 코드 중지: 350NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

Threadpool 중지 세부 정보

이 스레드 풀 스레드의 우선 순위가 변경되었습니다.

가능한 원인

스레드 우선 순위가 스레드 풀로 반환될 때 변경되면 이 중지가 생성됩니다.

Application Verifier에서 표시하는 정보
  • 형식: -  콜백(%p)을 실행한 스레드 풀 스레드(%x)의 스레드 우선 순위가 변경됨(%i -> %i)
  • 매개 변수 1  콜 백 함수입니다.
  • 매개 변수 2 - 컨텍스트입니다.
  • 매개 변수 3-Threadpool   개체 할당 스택 추적, dps를 사용하여 덤프합니다.
  • 매개 변수 4 - 현재 우선 순위입니다.

추가 정보
  • 테스트 계층: Threadpool
  • 중지 ID: INCONSISTENT_PRIORITY
  • 코드 중지: 700NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

이 스레드 풀 스레드의 선호도가 변경되었습니다.

가능한 원인

스레드 선호도가 스레드 풀로 반환될 때 변경되면 이 중지가 생성됩니다.

Application Verifier에서 표시하는 정보
  • 콜백(%p)을 실행한 Format: - threadpool 스레드(%x)에 변경된 스레드 선호도 마스크(%p -> %p)가 있습니다.
  • 매개 변수 1  콜 백 함수입니다.
  • 매개 변수 2 - 컨텍스트입니다.
  • 매개 변수 3-Threadpool   개체 할당 스택 추적, dps를 사용하여 덤프합니다.
  • 매개 변수 4 - 현재 선호도입니다.

추가 정보
  • 테스트 계층: Threadpool
  • 중지 ID: INCONSISTENT_AFFINITY_MASK
  • 코드 중지: 700NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

현재 스레드의 msg 풀에서 처리되지 않은 msg입니다.

가능한 원인

이 스레드 풀 스레드가 풀에 반환될 때 처리되지 않은 상태로 남아 있는 메시지가 있으면 이 중지가 생성됩니다. 완전히 다른 컨텍스트에서 처리되므로 위험합니다. 이 스레드에 게시된 메시지를 보려면 !avrf -tp <Param4> 를 사용하세요.

Application Verifier에서 표시하는 정보
  • 형식: - threadpool 스레드(%x)가 콜백을 실행한 경우(%p) 미해결 창 메시지(%x: %x)
  • 매개 변수 1  콜 백 함수입니다.
  • 매개 변수 2 - 컨텍스트입니다.
  • 매개 변수 3-Threadpool   개체 할당 스택 추적, dps를 사용하여 덤프합니다.
  • 매개 변수 4-Threadpool   스레드 ID입니다. !avrf -tp <threadid>를 사용하여 이 스레드에 게시된 메시지를 확인하세요.

추가 정보
  • 테스트 계층: Threadpool
  • 중지 ID: ORPHANED_THREAD_MESSAGE
  • 코드 중지: 700NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

닫지 않은 창은 현재 스레드에 속합니다.

가능한 원인

이 스레드 풀 스레드가 풀에 반환될 때 모든 창이 활성 상태로 유지되면 이 중지가 생성됩니다.

Application Verifier에서 표시하는 정보
  • 형식: -  콜백(%p)을 실행한 스레드 풀 스레드(%x)에 메시지를 받을 수 있는 유효한 hwnd(%x: %s)가 있습니다.
  • 매개 변수 1  콜 백 함수입니다.
  • 매개 변수 2 - 컨텍스트입니다.
  • 매개 변수 3-Threadpool   개체 할당 스택 추적, dps를 사용하여 덤프합니다.
  • 매개 변수 4-Threadpool   스레드 ID입니다.

추가 정보
  • 테스트 계층: Threadpool
  • 중지 ID: ORPHANED_THREAD_WINDOW
  • 코드 중지: 700NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

스레드 풀 스레드의 ExitThread()입니다.

가능한 원인

이 중지는 ExitThread가 스레드 풀 스레드에서 호출되는 경우 생성됩니다. 시스템을 불안정하게 만들 것이기 때문에 금지되어 있습니다. 리소스 누수, 동결 또는 AV가 발생합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1  콜 백 함수입니다.
  • 매개 변수 2 - 컨텍스트입니다.
  • 매개 변수 3-Threadpool   개체 할당 스택 추적, dps를 사용하여 덤프합니다.
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: Threadpool
  • 중지 ID: ILLEGAL_THREAD_EXIT
  • 코드 중지: 700NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

스레드가 스레드 풀 스레드로 반환되면 가장 상태입니다.

가능한 원인

이 중지는 콜백 함수가 다른 사용자를 가장하도록 스레드 토큰을 변경하고 스레드 풀로 다시 반환하기 전에 다시 설정하는 것을 잊은 경우에 생성됩니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1  콜 백 함수입니다.
  • 매개 변수 2 - 컨텍스트입니다.
  • 매개 변수 3-Threadpool   개체 할당 스택 추적, dps를 사용하여 덤프합니다.
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: Threadpool
  • 중지 ID: THREAD_IN_IMPERSONATION
  • 코드 중지: 700NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

영구 스레드가 필요한 함수가 호출됩니다.

가능한 원인

일부 Microsoft Windows API는 전용 또는 영구 스레드 내에서 호출해야 합니다. 스레드 풀에서 일반적으로 스레드 로컬 스토리지를 사용하고 RegNotifyChangeKeyValue 함수와 같은 영구 스레드가 필요한 비동기 호출을 큐에 대기하지 않아야 합니다. 그러나 이러한 함수는 WT_EXECUTEINPERSISTENTTHREAD 옵션과 함께 QueueUserWorkItem을 사용하여 영구 작업자 스레드에 큐에 대기할 수 있습니다. 디버거의 kb는 호출자를 표시합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1  콜 백 함수입니다.
  • 매개 변수 2 - 컨텍스트입니다.
  • 매개 변수 3-Threadpool   개체 할당 스택 추적, dps를 사용하여 덤프합니다.
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: Threadpool
  • 중지 ID: PERSISTED_THREAD_NEEDED
  • 코드 중지: 700NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

스레드가 더티 트랜잭션 상태입니다.

가능한 원인

이 중지는 콜백 함수가 현재 트랜잭션 핸들을 닫거나 다시 설정하는 것을 잊은 경우 생성됩니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1  콜 백 함수입니다.
  • 매개 변수 2 - 컨텍스트입니다.
  • 매개 변수 3-Threadpool   개체 할당 스택 추적, dps를 사용하여 덤프합니다.
  • 매개 변수 4  트랜잭션  핸들입니다.

추가 정보
  • 테스트 계층: Threadpool
  • 중지 ID: DIRTY_TRANSACTION_CONTEXT
  • 코드 중지: 700NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

이 스레드 풀 상태에는 CoInit 및 CoUnInit 호출의 불균형이 있습니다.

가능한 원인

이 중지는 콜백 함수가 CoInit 및 CoUnInit의 불균형을 호출하는 경우 생성됩니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1  콜 백 함수입니다.
  • 매개 변수 2 - 컨텍스트입니다.
  • 매개 변수 3-Threadpool   개체 할당 스택 추적, dps를 사용하여 덤프합니다.
  • 매개 변수 4  균형  통화 수입니다.

추가 정보
  • 테스트 계층: Threadpool
  • 중지 ID: DIRTY_COM_STATE
  • 코드 중지: 700NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

타이머 개체의 매개 변수가 일치하지 않습니다. 타이머를 만들 때 WT_EXECUTEONLYONCE 지정되는 기간은 0이어야 합니다.

가능한 원인

타이머가 WT_EXECUTEONLYONCE 플래그를 사용하여 한 번만 신호로 설정된 경우 타이머에 신호를 보낼 마침표가 0이 아닌 경우 이 중지가 생성됩니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 마침표가 지정되었습니다.
  • 매개 변수 2  플래그 가 지정되었습니다.
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: Threadpool
  • 중지 ID: INCONSISTENT_TIMER_PARAMS
  • 코드 중지: 700NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

로더 잠금은 콜백 내의 스레드 풀 스레드에 의해 유지되었습니다.

가능한 원인

이 중지는 로더 잠금이 콜백 내에서 유지되고 스레드가 스레드 풀로 반환될 때 해제되지 않는 경우에 생성됩니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1  콜 백 함수입니다.
  • 매개 변수 2 - 컨텍스트입니다.
  • 매개 변수 3-Threadpool   개체 할당 스택 추적, dps를 사용하여 덤프합니다.
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: Threadpool
  • 중지 ID: LOADER_LOCK_HELD
  • 코드 중지: 700NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

기본 설정 언어는 콜백 내의 threadpool 스레드에 의해 설정됩니다.

가능한 원인

이 중지는 기본 설정 언어가 콜백 내에서 설정되고 스레드가 스레드 풀로 반환될 때 지워지지 않는 경우에 생성됩니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1  콜 백 함수입니다.
  • 매개 변수 2 - 컨텍스트입니다.
  • 매개 변수 3-Threadpool   개체 할당 스택 추적, dps를 사용하여 덤프합니다.
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: Threadpool
  • 중지 ID: PREFERRED_LANGUAGES_SET
  • 코드 중지: 700NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

백그라운드 우선 순위는 콜백 내의 threadpool 스레드에 의해 설정됩니다.

가능한 원인

이 중지는 백그라운드 우선 순위가 콜백 내에서 설정되고 스레드가 스레드 풀로 반환될 때 사용하지 않도록 설정되지 않은 경우에 생성됩니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1  콜 백 함수입니다.
  • 매개 변수 2 - 컨텍스트입니다.
  • 매개 변수 3-Threadpool   개체 할당 스택 추적, dps를 사용하여 덤프합니다.
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: Threadpool
  • 중지 ID: BACKGROUND_PRIORITY_SET
  • 코드 중지: 700NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

스레드 풀 스레드에서 TerminateThread().

가능한 원인

이 중지는 TerminateThread가 스레드 풀 스레드에서 호출되는 경우 생성됩니다. 시스템을 불안정하게 만들 것이기 때문에 금지되어 있습니다. 리소스 누수, 동결 또는 AV가 발생합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 사용되지 않음
  • 매개 변수 2 - 사용되지 않음
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: Threadpool
  • 중지 ID: ILLEGAL_THREAD_TERMINATION
  • 코드 중지: 700NAN
  • 심각도: 오류
  • 일회성 오류: 
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

참고 항목

애플리케이션 검증 도구 - 코드 및 정의 중지

애플리케이션 검증 도구 - 개요

애플리케이션 검증 도구 - 기능

애플리케이션 검증 도구 - 애플리케이션 테스트

애플리케이션 검증 도구 - 애플리케이션 검증 도구 내의 테스트

애플리케이션 검증 도구 - 애플리케이션 검증 도구 디버깅 중지

애플리케이션 검증 도구 - 질문과 대답