다음을 통해 공유


버그 검사 0x7F: UNEXPECTED_KERNEL_MODE_TRAP

UNEXPECTED_KERNEL_MODE_TRAP 버그 검사 값은 0x0000007F. 이 버그 검사 Intel CPU가 트랩을 생성하고 커널이 이 트랩을 catch하지 못했음을 나타냅니다.

이 트랩은 다음 유형 중 하나일 수 있습니다.

  • 커널이 잡을 수 없는 트랩인 바운드 트랩입니다.
  • 이전 오류를 처리하는 동안 발생한 오류인 이중 오류로, 항상 시스템 오류가 발생합니다.

중요

이 항목은 프로그래머를 위한 것입니다. 컴퓨터를 사용하는 동안 블루 스크린 오류 코드를 받은 고객인 경우 블루 스크린 오류 문제 해결을 참조하세요.

매개 변수 1

파란색 화면에 표시되는 첫 번째 매개 변수는 트랩 번호를 지정합니다.

가장 일반적인 트랩 번호는 다음 코드입니다.

매개 변수 트랩 코드 Description
0x00000000 0으로 나누기 오류 DIV 명령이 실행되고 divisor가 0임을 나타냅니다. 메모리 손상, 기타 하드웨어 문제 또는 소프트웨어 오류로 인해 이 오류가 발생할 수 있습니다.
0x00000004 오버플로 오버플로(OF) 플래그가 설정되면 프로세서가 인터럽트 처리기에 대한 호출을 실행할 때 발생합니다.
0x00000005 경계 검사 오류 BOUND 명령을 실행하는 동안 프로세서가 피연산자에서 지정된 제한을 초과했음을 나타냅니다. BOUND 명령은 서명된 배열 인덱스가 특정 범위 내에 있는지 확인합니다.
0x00000006 잘못된 Opcode 프로세서가 잘못된 명령을 실행하려고 했음을 나타냅니다. 이 오류는 일반적으로 명령 포인터가 손상되어 잘못된 위치를 가리키는 경우에 발생합니다. 이 오류의 가장 일반적인 원인은 하드웨어 메모리 손상입니다.
0x00000008 이중 오류 이전 예외에 대한 처리기를 호출하는 동안 예외가 발생했음을 나타냅니다. 일반적으로 두 예외는 직렬로 처리됩니다. 직렬로 처리할 수 없는 몇 가지 예외가 있으므로 프로세서는 이중 오류를 알릴 수 있습니다.

이중 오류의 일반적인 원인은 두 가지입니다.

  • 첫 번째 원인은 커널 스택 오버플로입니다. 이 오버플로는 가드 페이지가 적중되고 커널이 트랩 프레임을 푸시하려고 할 때 발생합니다. 스택이 남아 있지 않으므로 스택 오버플로가 발생하여 이중 오류가 발생합니다. 이 상황이 발생했다고 생각되는 경우 !스레드 확장을 사용하여 스택 제한을 확인한 다음 kb(Stack Backtrace 표시) 명령을 큰 값(예: kb 100)과 함께 사용하여 전체 스택을 표시합니다.
  • 두 번째 일반적인 원인은 하드웨어 문제입니다.

덜 일반적인 트랩 코드에는 다음 값이 포함됩니다.

  • 0x00000001: 시스템 디버거 호출(DEBUG)
  • 0x00000003: 디버거 중단점(INT3)
  • 0x00000007: 공동 프로세서가 없는 하드웨어 공동 프로세서 명령(NXP_NOT_AVAILABLE)
  • 0x0000000A: 손상된 작업 상태 세그먼트(INVALID_TSS)
  • 0x0000000B: 존재하지 않는 메모리 세그먼트에 대한 액세스(SEGMENT_NOT_PRESENT)
  • 0x0000000C: 스택의 제한을 초과하는 메모리에 대한 액세스(STACK_FAULT)
  • 0x0000000D: 다른 예외, 애플리케이션에 대한 액세스 위반과 관련된 보호 오류(GP_FAULT)
  • 0x0000000F: 예약된 트랩 예외(RESERVED_TRAP)
  • 0x00000010: 하드웨어 공동 프로세서 예외(NPX_ERROR)
  • 0x00000011: 맞춤 검사 예외(ALIGNMENT_CHECK)

다른 트랩 번호는 문제 해결 중인 프로세서에 대한 Intel 프로세서 아키텍처 설명서를 참조하세요.

원인

버그 검사 0x7F 일반적으로 결함이 있거나 일치하지 않는 하드웨어, 특히 메모리를 설치한 후 또는 설치된 하드웨어가 실패한 경우에 발생합니다.

커널 스택 오버플로 시 이중 오류가 발생할 수 있습니다. 이 오버플로는 여러 드라이버가 동일한 스택에 연결된 경우에 발생합니다. 예를 들어 두 개의 파일 시스템 필터 드라이버가 동일한 스택에 연결된 다음 파일 시스템이 다시 재귀하는 경우 스택 오버플로가 발생합니다.

디버그

항상 -v 옵션인 자세한 정보를 사용하여 !analyze 확장으로 시작합니다. 출력 및 오류 코드를 검사합니다. 여러 덤프에서 재귀 추세를 찾습니다.

!analyze를 시도한 후 kv(Stack Backtrace 표시) 디버거 명령을 사용합니다.

이러한 명령 중 하나를 사용한 후 kv 를 다시 사용하여 새 스택을 표시합니다.

문제 해결

하드웨어

최근에 컴퓨터에 하드웨어를 추가한 경우 제거하여 오류가 다시 발생하는지 확인합니다. 기존 하드웨어가 실패한 경우 결함이 있는 구성 요소를 제거하거나 교체합니다. 시스템 제조업체가 제공하는 하드웨어 진단 실행하여 실패한 하드웨어 구성 요소를 확인합니다.

메모리가 잘못되었거나 일치하지 않는 경우 이 버그가 검사 수 있습니다. Windows의 메모리 진단 프로그램을 사용하여 모든 시스템 메모리를 테스트합니다.

모든 하드 디스크 드라이브 및 하드 디스크 컨트롤러가 설치된 Windows 버전과 호환되는지 확인합니다.

시스템 마더보드에 긁힌 추적 또는 결함이 있는 구성 요소와 같은 문제가 있을 수 있습니다. 전원 공급 장치가 고장나면 문제가 발생할 수도 있습니다.

오버클럭은 CPU가 정격 사양보다 빠른 속도로 실행되도록 설정하므로 이 오류가 발생할 수 있습니다. 오류가 발생한 컴퓨터를 오버클럭한 경우 CPU를 기본 클록 속도 설정으로 반환합니다. BIOS의 메모리 캐싱을 사용하지 않도록 설정하여 해당 옵션을 사용할 수 있는 경우 문제를 resolve.

소프트웨어

시스템 로그인 이벤트 뷰어 오류를 일으키는 디바이스 또는 드라이버를 식별하는 데 도움이 될 수 있는 다른 오류 메시지를 확인합니다.

하드웨어 제조업체의 ACPI/BIOS, 하드 드라이버 컨트롤러 또는 네트워크 카드에 대한 업데이트 가용성을 확인합니다.

새 디바이스 또는 업데이트된 디바이스 드라이버를 설치한 후 오류가 발생한 경우 드라이버를 제거하거나 교체합니다. 이 상황에서 시작 시퀀스 중에 오류가 발생하는 경우 안전 모드를 사용하여 결함이 있는 드라이버의 이름을 바꾸거나 삭제합니다. 드라이버가 안전 모드에서 시스템 시작 프로세스의 일부로 사용되는 경우 파일에 액세스하기 위해 복구 콘솔을 사용하여 컴퓨터를 시작합니다. 마지막으로 성공한 구성 옵션을 사용해 보세요. 이 옵션은 한 번에 하나의 드라이버 또는 서비스만 추가할 때 가장 효과적입니다.

새 버전의 Windows 운영 체제로 업그레이드하는 동안 이 오류가 발생하면 호환되지 않는 소프트웨어로 인해 오류가 발생할 수 있습니다. 예를 들어 디바이스 드라이버, 시스템 서비스, 바이러스 스캐너 또는 백업 도구가 있습니다. 가능하면 업그레이드하기 전에 타사 디바이스 드라이버 및 시스템 서비스를 모두 제거하고 바이러스 스캐너를 사용하지 않도록 설정합니다. 이러한 도구의 업데이트를 받으려면 소프트웨어 제조업체에 문의하세요. 또한 최신 Windows 업데이트를 설치했는지 확인합니다.

추가 정보