다음을 통해 공유


애플리케이션 검증 도구 - 코드 중지 - 네트워킹

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

DllMain에서 호출된 잘못된 네트워킹 API

가능한 원인

DllMain 내에서 호출되는 것을 지원하지 않는 네트워킹 API에 대한 호출이 수행되었습니다. Win32 네트워킹 API뿐만 아니라 많은 Win32 API는 DllMain에서 호출할 수 없습니다. 자세한 내용은 MSDN 라이브러리의 DllMain에 대한 설명서를 참조하세요. 호출한 루틴을 식별하려면 디버거에서 'k' 명령을 사용하여 현재 스택 추적을 덤프합니다.

Application Verifier에서 표시하는 정보
  • DllMain에서 호출되는 매개 변수 1  네트워킹  함수
  • 매개 변수 2-NULL  이 아닌 경우 잘못된 호출을 만드는 Dll의 이름
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 네트워킹
  • 중지 ID: UNSUPPORTED_API_CALL_IN_DLLMAIN
  • 중지 코드: 0000e000
  • 심각도: 오류
  • 일회성 오류: 아니요
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

닫힌 소켓 사용 시도

가능한 원인

소켓이 닫힌 후 사용되었습니다. 닫힌 소켓을 사용하려는 루틴을 식별하려면 디버거에서 'k' 명령을 사용하여 현재 스택 추적을 덤프합니다. SOCKET을 닫은 루틴의 스택 추적을 덤프하려면 중지의 두 번째 매개 변수와 함께 dps 명령을 사용합니다.

Application Verifier에서 표시하는 정보
  • 액세스 중인 매개 변수 1-SOCKET  
  • SOCKET을 닫은 함수의 매개 변수 2 - 스택 추적입니다. NULL이 아닌 경우 dps를 사용하여 스택 추적 덤프
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 네트워킹
  • 중지 ID: WSA_SOCKET_ALREADY_CLOSED
  • 중지 코드: 0000e001
  • 심각도: 오류
  • 일회성 오류: 아니요
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

알 수 없는 소켓 사용 시도

가능한 원인

Winsock에 대한 호출로 생성되지 않은 SOCKET에 알 수 없는 값을 사용하려고 했습니다. 이 작업을 시도한 루틴의 스택 추적을 보려면 디버거에서 'k' 명령을 사용합니다.

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

추가 정보
  • 테스트 계층: 네트워킹
  • 중지 ID: WSA_INVALID_SOCKET_HANDLE
  • 중지 코드: 0000e002
  • 심각도: 오류
  • 일회성 오류: 아니요
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

누수 소켓 핸들이 검색됨

가능한 원인

Winsock 기본 서비스 공급자의 오픈 소켓이 언로드되는 DLL에서 유출된 것으로 감지되었습니다. 이 중지 문제를 해결하려면 이 검증 도구 중지의 두 번째 매개 변수에서 디버거의 dps 명령을 사용하여 SOCKET 핸들을 연 스레드의 스택 추적을 덤프합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1-SOCKET   핸들이 유출됨
  • 매개 변수 2 - 초기화 스택 추적입니다. NULL이 아닌 경우 dps를 사용하여 스택 덤프
  • 핸들을 연 스레드의 매개 변수 3 - 스레드 ID
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 네트워킹
  • 중지 ID: WSA_LEAKED_SOCKET_HANDLE
  • 중지 코드: 0000e003
  • 심각도: 오류
  • 일회성 오류: 아니요
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

닫힌 소켓 사용 시도

가능한 원인

Winsock 기본 공급자의 소켓은 닫힌 후 사용되었습니다. 이는 일반적으로 계층화된 서비스 공급자(LSP - 애플리케이션과 Winsock 간의 DLL)의 오류를 나타냅니다. 닫힌 소켓을 사용하려는 루틴을 식별하려면 디버거에서 'k' 명령을 사용하여 현재 스택 추적을 덤프합니다. SOCKET을 닫은 루틴의 스택 추적을 덤프하려면 중지의 두 번째 매개 변수와 함께 dps 명령을 사용합니다.

Application Verifier에서 표시하는 정보
  • 액세스 중인 매개 변수 1-SOCKET  입니다.
  • SOCKET을 닫은 함수의 매개 변수 2 - 스택 추적입니다. NULL이 아닌 경우 dps를 사용하여 스택 추적 덤프
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 네트워킹
  • 중지 ID: WSP_SOCKET_ALREADY_CLOSED
  • 중지 코드: 0000e004
  • 심각도: 오류
  • 일회성 오류: 아니요
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

알 수 없는 소켓 사용 시도

가능한 원인

알 수 없는 SOCKET 핸들 값이 Winsock LSP(계층화된 서비스 공급자)에서 사용되었습니다. 이는 일반적으로 애플리케이션과 Winsock 사이에 계층화된 특정 LSP에 대한 오류를 가리킵니다. 알 수 없는 SOCKET을 사용하려고 했던 루틴을 식별하려면 디버거에서 'k' 명령을 사용하여 현재 스택 추적을 덤프합니다.

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

추가 정보
  • 테스트 계층: 네트워킹
  • 중지 ID: WSP_INVALID_SOCKET_HANDLE
  • 중지 코드: 0000e005
  • 심각도: 오류
  • 일회성 오류: 아니요
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

누수 소켓 핸들이 검색됨

가능한 원인

Winsock 기본 서비스 공급자의 오픈 소켓이 유출된 것으로 감지되었습니다. 이는 일반적으로 애플리케이션과 Winsock 사이에 계층화된 특정 LSP에 대한 오류를 가리킵니다. 이 중지 문제를 해결하려면 이 검증 도구 중지의 두 번째 매개 변수에서 디버거의 dps 명령을 사용하여 SOCKET 핸들을 연 스레드의 스택 추적을 덤프합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1-SOCKET   핸들이 유출됨
  • 매개 변수 2 - 초기화 스택 추적입니다. NULL이 아닌 경우 dps를 사용하여 스택 덤프
  • 핸들을 연 스레드의 매개 변수 3 - 스레드 ID
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 네트워킹
  • 중지 ID: WSP_LEAKED_SOCKET_HANDLE
  • 코드 중지: 0000e006
  • 심각도: 오류
  • 일회성 오류: 아니요
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

WSAStartup()이 성공하기 전에 또는 분산에 성공한 WSACleanup() 호출 후 Winsock API가 호출되었습니다.

가능한 원인

WSAStarup()이 성공하기 전이나 분산이 성공한 WSACleanup() 호출 후에 네트워킹 API에 대한 호출이 수행되었습니다. Winsock API 사용에 대한 초기화를 보장하기 위해 Winsock을 사용하는 모든 구성 요소에서 참조 수를 제공하려면 WSAStartup이 필요합니다. 구성 요소의 불균형 WSAStartup/WSACleanup 호출 패턴은 정의되지 않은 동작으로 이어질 수 있습니다. 그러면 Winsock 계층이 라이브러리를 언로드하고 리소스를 해제할 수 있습니다.

Application Verifier에서 표시하는 정보
  • 이 호출자가 매개 변수 1 - 마지막으로 성공한 WSAStartup 호출입니다. NULL이 아닌 경우 dps를 사용하여 스택 덤프
  • 이 호출자가 매개 변수 2 - 마지막으로 성공한 WSACleanup 호출입니다. NULL이 아닌 경우 dps를 사용하여 스택 덤프
  • 이 프로세스에서 매개 변수 3 - 마지막으로 성공한 WSAStartup 호출입니다. NULL이 아닌 경우 dps를 사용하여 스택 덤프
  • 이 프로세스에서 매개 변수 4 - 마지막으로 성공한 WSACleanup 호출입니다. NULL이 아닌 경우 dps를 사용하여 스택 덤프

추가 정보
  • 테스트 계층: 네트워킹
  • 중지 ID: WSA_NOT_INITIALIZED
  • 중지 코드: 0000e007
  • 심각도: 오류
  • 일회성 오류: 아니요
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

WSPStartup()이 성공하기 전 또는 성공적으로 WSPCleanup() 호출을 수행한 후 호출된 네트워킹 API

가능한 원인

WSPStarup()이 성공하기 전이나 분산이 성공한 WSPCleanup() 호출 후에 Winsock 서비스 공급자 API에 대한 호출이 수행되었습니다. 이는 일반적으로 애플리케이션과 Winsock 사이에 계층화된 특정 Winsock LSP(계층화된 서비스 공급자)에 대한 오류를 가리킵니다. Winsock 서비스 공급자 API 사용에 대한 초기화를 보장하기 위해 Winsock을 사용하는 모든 LSP에서 참조 수를 제공하려면 WSPStartup이 필요합니다. LSP의 불균형 WSPStartup/WSPCleanup 호출 패턴은 정의되지 않은 동작으로 이어질 수 있습니다. 그러면 Winsock 계층이 라이브러리를 언로드하고 리소스를 해제할 수 있습니다.

Application Verifier에서 표시하는 정보
  • 이 호출자가 매개 변수 1 - 마지막으로 성공한 WSPStartup 호출입니다. NULL이 아닌 경우 dps를 사용하여 스택 덤프
  • 이 호출자가 매개 변수 2 - 마지막으로 성공한 WSPCleanup 호출입니다. NULL이 아닌 경우 dps를 사용하여 스택 덤프
  • 이 프로세스에서 매개 변수 3 - 마지막으로 성공한 WSPStartup 호출입니다. NULL이 아닌 경우 dps를 사용하여 스택 덤프
  • 이 프로세스에서 매개 변수 4 - 마지막으로 성공한 WSPCleanup 호출입니다. NULL이 아닌 경우 dps를 사용하여 스택 덤프

추가 정보
  • 테스트 계층: 네트워킹
  • 중지 ID: WSP_NOT_INITIALIZED
  • 코드 중지: 0000e008
  • 심각도: 오류
  • 일회성 오류: 아니요
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

성공적인 NSPStartup() 전에 또는 분산에 성공한 NSPCleanup() 호출 후 Winsock 이름 서비스 공급자 API가 호출되었습니다.

가능한 원인

NSPStarup()에 성공하기 전이나 NSPCleanup() 호출에 성공한 후 Winsock 이름 서비스 공급자 API에 대한 호출이 수행되었습니다. 이는 일반적으로 애플리케이션과 Winsock 사이에 계층화된 특정 Winsock NSP(이름 서비스 공급자)에 대한 오류를 가리킵니다. Winsock 이름 서비스 공급자 API 사용에 대한 초기화를 보장하기 위해 Winsock을 사용하는 NSP의 참조 수를 제공하려면 NSPStartup이 필요합니다. NSP의 불균형 NSPStartup/NSPCleanup 호출 패턴은 정의되지 않은 동작으로 이어질 수 있습니다. 그러면 Winsock 계층이 라이브러리를 언로드하고 리소스를 해제할 수 있습니다.

Application Verifier에서 표시하는 정보
  • 이 호출자가 매개 변수 1 - 마지막으로 성공한 NSPStartup 호출입니다. NULL이 아닌 경우 dps를 사용하여 스택 덤프
  • 이 호출자가 매개 변수 2 - 마지막으로 성공한 NSPCleanup 호출입니다. NULL이 아닌 경우 dps를 사용하여 스택 덤프
  • 이 프로세스에서 매개 변수 3 - 마지막으로 성공한 NSPStartup 호출입니다. NULL이 아닌 경우 dps를 사용하여 스택 덤프
  • 이 프로세스에서 매개 변수 4 - 마지막으로 성공한 NSPCleanup 호출입니다. NULL이 아닌 경우 dps를 사용하여 스택 덤프

추가 정보
  • 테스트 계층: 네트워킹
  • 중지 ID: NSP_NOT_INITIALIZED
  • 중지 코드: 0000e009
  • 심각도: 오류
  • 일회성 오류: 아니요
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

잘못된 Winsock 확장 함수 포인터 사용이 감지됨

가능한 원인

Microsoft Winsock Extension 함수는 런타임에 함수 포인터 값에 대해 Winsock을 쿼리해야만 호출할 수 있습니다. 이 함수 포인터가 반환된 이후 Winsock 런타임이 언로드되었습니다. 호출자는 WSACleanup을 호출한 후 함수 포인터의 복사본을 유지하고 다시 사용하려고 했습니다.

Application Verifier에서 표시하는 정보
  • Winsock 함수 포인터를 가져오기 위한 매개 변수 1 - 마지막 호출입니다. NULL이 아닌 경우 dps를 사용하여 스택 덤프
  • 함수 포인터를 무효화하여 mswsock을 언로드한 매개 변수 2 - 마지막 호출입니다. NULL이 아닌 경우 dps를 사용하여 스택 덤프
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 네트워킹
  • 중지 ID: INVALID_FUNCTION_POINTER_DETECTED
  • 중지 코드: 0000e00A
  • 심각도: 오류
  • 일회성 오류: 아니요
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

WSACleanup은 해당 SOCKET를 소유한 코드 아래에 있는 기존 SOCKET 핸들을 중단 및 닫습니다.

가능한 원인

이 프로세스에서 열린 SOCKET 핸들이 있는 동안 WSACleanup을 호출하여 Winsock 참조 수를 0으로 줄였습니다. Winsock은 참조 수가 0에 도달하면 열린 소켓 핸들을 닫습니다. 이는 일반적으로 WSACleanup을 통해 Winsock 참조 수를 너무 자주 감소시키는 버그(WSAStartup과 불균형) 또는 소켓 핸들이 더 이상 호출자에 의해 올바르게 추적되지 않는 버그입니다(유출됨). 디버거에 k를 입력하여 Winsock 참조 수를 0으로 하여 현재 WSACleanup을 호출하는 사용자를 표시합니다.

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

추가 정보
  • 테스트 계층: 네트워킹
  • 중지 ID: WSA_SOCKETS_ABORTED
  • 중지 코드: 0000e00B
  • 심각도: 오류
  • 일회성 오류: 아니요
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

WSPCleanup이 해당 SOCKET를 소유한 코드 아래에 있는 기존 서비스 공급자 SOCKET 핸들을 중단 및 닫습니다.

가능한 원인

WSPCleanup은 이 프로세스에 열려 있는 SOCKET 핸들이 있는 동안 Winsock 참조 수를 0으로 감소시키는 계층화된 서비스 공급자(LSP)에 의해 호출되었습니다. Winsock은 참조 수가 0에 도달하면 열린 소켓 핸들을 닫습니다. 이는 일반적으로 WSPCleanup을 통해 Winsock 참조 수를 너무 자주 감소시키는 LSP의 버그입니다(WSPStartup과 불균형) SOCKET 핸들이 호출자에 의해 더 이상 올바르게 추적되지 않습니다(유출됨). 디버거에 k를 입력하여 Winsock 참조 수를 0으로 하여 현재 WSPCleanup을 호출하는 사용자를 표시합니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1 - 미해결 상태인 서비스 공급자 소켓 수
  • 매개 변수 2 - 사용되지 않음
  • 매개 변수 3 - 사용되지 않음
  • 매개 변수 4 - 사용되지 않음

추가 정보
  • 테스트 계층: 네트워킹
  • 중지 ID: WSP_SOCKETS_ABORTED
  • 코드 중지: 0000e00C
  • 심각도: 오류
  • 일회성 오류: 아니요
  • 오류 보고서: 없음
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

현재 Winsock 호출에 대해 즉시 반환 값 또는 GetLastError가 잘못되었습니다. 이는 일반적으로 서비스 공급자의 오류를 가리킵니다.

가능한 원인

반환되는 값 또는 GetLastError의 현재 값이 지정된 Winsock 2 사양을 따르지 않습니다. 일반적으로 애플리케이션과 Winsock 간에 계층화된 DLL인 LSP(계층화된 서비스 공급자)의 버그를 가리킵니다. 이러한 경우 LSP가 Winsock API 계약을 위반하고 가짜 값을 호출자에게 반환합니다. 디버거의 매개 변수 3에서 ln을 사용하여 잘못된 반환 코드를 반환한 DLL에서 함수를 찾습니다. 매개 변수 1과 2를 확인하여 Winsock 호출과 관련하여 잘못된 값이 무엇인지 확인합니다. Winsock send 또는 recv 함수에 대한 호출이 전송 또는 수신 요청된 실제 바이트 수를 보려면 매개 변수 4를 봅니다. 반환된 바이트 수가 보내거나 받도록 요청된 바이트 수보다 큰 것은 유효하지 않습니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1  반환  값
  • 매개 변수 2-GetLastError  
  • 다음 서비스 공급자에 대한 매개 변수 3  함수  포인터입니다. ln을 사용하여 방금 이 값을 반환한 사람 확인
  • 매개 변수 4 -  데이터 보내기/받기의 경우 API에 게시된 실제 바이트 수

추가 정보
  • 테스트 계층: 네트워킹
  • 중지 ID: WSA_RETURN_INVALID
  • 중지 코드: 0000e00D
  • 심각도: 오류
  • 일회성 오류: 아니요
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

반환 값 또는 lpError가 현재 Winsock 호출에 유효하지 않습니다. 이는 일반적으로 기본 서비스 공급자 또는 네트워킹 스택의 오류를 가리킵니다.

가능한 원인

반환되는 값 또는 lpError의 현재 값이 지정된 Winsock 2 사양을 따르지 않습니다. 일반적으로 로드된 기본 서비스 공급자(일반적으로 mswsock.dll) 또는 네트워킹 스택의 버그를 가리킵니다. 디버거의 매개 변수 3에서 ln을 사용하여 잘못된 반환 코드를 반환한 DLL에서 함수를 찾습니다. 매개 변수 1과 2를 확인하여 Winsock 호출과 관련하여 잘못된 값이 무엇인지 확인합니다. Winsock send 또는 recv 함수에 대한 호출이 전송 또는 수신 요청된 실제 바이트 수를 보려면 매개 변수 4를 봅니다. 반환된 바이트 수가 보내거나 받도록 요청된 바이트 수보다 큰 것은 유효하지 않습니다.

Application Verifier에서 표시하는 정보
  • 매개 변수 1  반환  값
  • 매개 변수 2-GetLastError  
  • 다음 서비스 공급자에 대한 매개 변수 3  함수  포인터입니다. ln을 사용하여 방금 이 값을 반환한 사람 확인
  • 매개 변수 4 -  데이터 보내기/받기의 경우 API에 게시된 실제 바이트 수

추가 정보
  • 테스트 계층: 네트워킹
  • 중지 ID: WSP_RETURN_INVALID
  • 코드 중지: 0000e00E
  • 심각도: 오류
  • 일회성 오류: 아니요
  • 오류 보고서: 중단
  • 파일에 로그온: 예
  • 백트레이스 만들기: 예

참고 항목

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

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

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

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

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

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

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