이 문서에서는 특정 프로세서 오류로 인해 컴퓨터의 STOP 0x0000007F 0x00000008 오류 메시지에 대한 솔루션을 제공합니다. 컴퓨터에서 실행 중인 프로세서의 ESP 레지스터에서 단일 비트 오류가 발생할 때 이 오류 메시지가 표시될 수 있습니다.
원래 KB 번호: 842465
증상
하나 이상의 Intel Xeon 프로세서를 실행 중이거나 다른 프로세서를 실행하는 컴퓨터에서 Windows는 다음 예제와 유사한 중지 오류 메시지를 표시할 수 있습니다.
STOP 0x0000007F(0x00000008, 0x00000000, 0x00000000, 0x00000000) UNEXPECTED_KERNEL_MODE_TRAP
이 문제가 발생하면 다음과 같은 조건이 충족됩니다.
- 중지 오류의 첫 번째 매개 변수는 "0x0000008"입니다. (이 오류는 이중 오류 예외입니다.)
- ESP 레지스터의 상반부에 있는 단일 비트 오류로 인해 ESP 레지스터의 값이 현재 스레드의 스택 범위를 벗어났습니다.
원인
이 문제는 컴퓨터의 프로세서 중 하나 이상이 있는 경우에 발생합니다.
컴퓨터의 BIOS(기본 입력/출력 시스템)에서 적용되지 않는 마이크로코드 업데이트가 필요합니다.
손상되거나 결함이 있습니다.
온도, 전력 또는 기타 조건에 대해 지정된 범위를 벗어나서 작동합니다.
해결
이 문제를 해결하려면 다음 문제 해결 방법 중 하나를 사용합니다.
방법 1: 프로세서가 마이크로코드 업데이트의 프로덕션 수정 버전을 실행하고 있는지 확인
마이크로 코드 업데이트는 프로세서의 내부적으로 구현된 논리에서 errata 또는 버그를 수정합니다. 마이크로코드 업데이트는 프로세서 자체에 영구적으로 저장할 수 없으며 컴퓨터가 시작될 때마다 프로세서에 로드해야 합니다. 마이크로 코드 업데이트는 컴퓨터의 BIOS 또는 Update.sys 드라이버에서 적용할 수 있습니다.
컴퓨터에 설치된 Intel 프로세서에 현재 적용되는 마이크로코드 업데이트의 수정 버전을 확인하려면 다음 단계를 수행합니다.
Intel 프로세서 식별 유틸리티를 다운로드합니다.
증상이 있는 컴퓨터에 Intel 프로세서 식별 유틸리티를 설치하고 실행합니다.
각 프로세서에 대해 다음 CPU 정보를 적어 씁니다.
- CPU 제품군
- CPU 모델
- CPU 단계별 실행
- CPU 수정 버전
CPU 제품군, CPU 모델 및 CPU 단계별 실행 값은 특정 유형의 프로세서를 식별합니다. CPU 수정 버전 값은 적용되는 마이크로코드 업데이트의 수정 버전을 식별합니다.
컴퓨터 제조업체에 문의하여 마이크로코드 업데이트의 수정 버전이 특정 프로세서에서 사용할 수 있는 최신 수정 버전인지 확인합니다. 수정 버전이 최신 버전이 아닌 경우 컴퓨터 제조업체에 최신 마이크로코드 업데이트 수정 버전을 적용할 업데이트된 BIOS를 요청합니다.
이 문서에서 설명하는 증상은 CPU 제품군, CPU 모델 및 CPU 단계별 값이 각각 15, 2 및 9이고 ServerWorks 칩셋을 사용하는 마더보드에 설치된 Intel Xeon 프로세서에서 가장 자주 관찰되었습니다. (CPU 제품군, CPU 모델 및 CPU 단계별 16진수 값은 각각 F, 2 및 9입니다.) 이러한 프로세서가 제대로 작동하려면 수정 버전 값 0x18 이상이 필요합니다. (0x18 10진수 값 24와 같습니다.
수정 버전 값이 0이면 컴퓨터에 설치된 프로세서에 대한 올바른 마이크로코드 업데이트가 컴퓨터 BIOS에 없음을 나타냅니다. 사용 중인 프로세서를 지원하는 마이크로코드 업데이트 수정 버전으로 BIOS를 업데이트해야 합니다.
Intel에서는 알려진 문제를 방지하기 위해 최신 마이크로코드 업데이트 수정 버전을 적용하는 것이 좋습니다.
방법 2: 프로세서가 손상되었는지 또는 결함이 있는지 확인
영향을 받는 컴퓨터에 설치된 프로세서에 프로덕션 마이크로코드 업데이트 수정 버전이 적용되어 있고 이 문서에 설명된 증상이 동일한 프로세서를 실행하는 동일한 모델의 모든 컴퓨터에서 발생하지 않는 경우 프로세서에 결함이 있을 수 있습니다.
프로세서가 손상되거나 결함이 있는지 확인하려면 증상이 없는 컴퓨터로 프로세서를 이동합니다.
Warning
프로세서를 변경하는 경우 컴퓨터 제조업체에서 제공하는 지침을 따르거나 적절하게 자격을 갖춘 하드웨어 기술자와 협력하여 프로세서를 변경합니다.
원래 컴퓨터에서 교체 프로세서가 있지만 원래 프로세서가 있는 다른 컴퓨터에서는 증상이 계속 발생하는 경우 손상된 프로세서나 결함이 있는 프로세서로 인해 문제가 발생하지 않을 수 있습니다.
원래 컴퓨터에서 교체 프로세서가 있는 상태에서 증상이 계속 발생하지 않고 원래 프로세서가 있는 다른 컴퓨터에서 발생하는 경우 문제가 손상되거나 프로세서 결함으로 인해 발생할 수 있습니다. 이 경우 컴퓨터 제조업체에 문의하여 원래 프로세서를 교체합니다.
이 문서에 설명된 증상이 있는 컴퓨터에 프로세서가 하나 이상 있는 경우 모든 프로세서를 다른 컴퓨터로 이동합니다. 결과에서 이러한 프로세서 중 하나 이상이 결함이 있을 수 있음을 나타내는 경우 한 번에 하나씩 프로세서를 이동하여 결함이 있을 수 있는 프로세서 또는 프로세서를 확인합니다.
방법 3: 프로세서가 지정된 환경 조건 범위 외부에서 작동하고 있는지 확인
과도한 실온, 나쁜 환기 또는 먼지 축적으로 인해 프로세서와 같은 전자 부품이 불규칙하게 동작할 수 있습니다. 팬 또는 막힌 공기 통로 오작동은 환기 문제를 일으킬 수 있습니다. 컴퓨터의 내부 또는 공기 통로가 먼지가 많거나 컴퓨터가 특정 위치에만 설치될 때 증상이 나타날 경우 시스템 과열이 요인이 될 수 있습니다. 구성 요소가 깨끗하고, 팬이 제대로 작동하고, 공기 통로가 방해받지 않도록 합니다. 또한 컴퓨터가 있는 방이 적절하게 환기되었는지 확인합니다. 실내 온도는 컴퓨터 제조업체에서 지정한 작동 범위에 있어야 합니다.
지정된 것보다 높거나 낮거나 변동하는 전압으로 인해 프로세서 및 기타 전자 부품이 불규칙하게 동작할 수 있습니다. 잘못되거나 일관되지 않은 주 전력 전압, 컴퓨터의 과부하 또는 부적절하게 작동하는 전원 공급 장치 또는 잘못 작동하는 마더보드 회로로 인해 잘못되거나 일관되지 않은 전압이 프로세서에 공급될 수 있습니다. 해당 기술자에게 문의하여 이러한 문제 중 하나가 증상의 원인이 될 수 있는지 확인합니다.
자세한 정보
ESP 레지스터를 스택 포인터 레지스터라고도 합니다. 스택은 스레드 실행의 현재 상태에 대한 정보를 저장하는 데 사용되는 메모리의 데이터 구조입니다. 스레드 스택은 진행 중인 함수 호출, 해당 함수에 전달되는 매개 변수 및 해당 함수에서 사용되는 변수를 추적하는 데 사용됩니다. ESP 레지스터의 값은 스택의 현재 상단을 가리킬 것으로 예상됩니다. ESP의 값이 올바르지 않으면 잘못된 정보 또는 잘못된 주소를 가리킬 수 있습니다. ESP의 값이 잘못된 주소를 가리키는 경우 이중 오류 예외가 발생할 수 있습니다.
중지 오류가 ESP 레지스터에서 단일 비트 오류의 결과인지 확인하려면 다음 단계를 수행합니다.
Windows용 Microsoft 디버깅 도구를 설치합니다.
WinDbg 도구를 실행하고, 파일을 선택하고, 크래시 덤프 열기를 선택하여 중지 오류 정보가 포함된 메모리 덤프 파일을 찾은 다음 확인을 선택합니다.
!analyze -v
명령을 실행하여 덤프 파일의 자동화된 분석을 가져옵니다.명령의 출력을
!analyze -v
검사하여 출력에 이중 오류 조건이 표시되는지 확인합니다. 이중 오류 조건이 있는 경우 명령을 실행.tss 28
하여 이중 오류 시 시스템 상태를 표시합니다. 일반적으로 이 값은 EBP 레지스터의 값에 상대적으로 가깝습니다.!thread
명령을 실행하여 현재 스레드의 스택 범위를 봅니다. 이중 오류 예외는 일반적으로 ESP 레지스터의 값이 현재 스레드의 스택에 대해 예약된 주소 범위를 벗어나는 경우에 발생합니다.이 특정 스레드가 실행 중인 경우 ESP 레지스터 값은 항상 Stack Base 값(f5d2a000)과 제한 값(f5d27000) 사이에 있어야 합니다. 일반적으로 ESP 레지스터의 값은 현재 값(f5d29c9c)에 상대적으로 가깝습니다. (현재 값은 Stack Base 값과 Limit 값 사이에도 있습니다.)
명령을 실행
!pcr
하여 스택 범위 값을 확인할 수도 있습니다.이 값은
NtTib.StackLimit
스택 범위의 하한을 나타냅니다. 값은NtTib.StackBase
ESP의 최근 값을 나타냅니다. 이NtTib.StackBase
값을 ESP 레지스터의 현재 값과 비교하여 현재 ESP 레지스터 값에 단일 비트 오류가 있는지 여부를 식별할 수 있습니다..formats esp ^ ebp
명령을 실행하여 ESP 및 EBP 레지스터 간의 값 차이를 표시합니다. EBP 레지스터의 스택 포인터 값은 단일 비트 오류를 제외하고 ESP 레지스터의 스택 포인터 값에 가깝습니다. 이 명령은 오류가 이진 형식으로 표시되는 경우 오류가 포함된 단일 상위 비트를 자주 표시합니다.가장 낮은 유효 자릿수를 무시하면 ESP 및 EBP 레지스터 간의 단일 비트 차이는 000000000 000010000 000000000 00000000 000000000이 이진 형식입니다. 차이점은 16진수 형식의 00080000입니다.
이 단일 비트 오류로 인해 ESP 레지스터에 잘못된 값이 포함됩니다. 잘못된 값으로 인해 이중 오류 예외, 버그 검사 및 시스템 크래시가 발생합니다.
특정 하드웨어에 대한 자세한 정보를 얻으려면 다음 단계를 수행합니다.
!cpuinfo
명령을 사용하여 CPU 버전 정보를 가져옵니다.크래시 덤프 파일을 분석할 때 업데이트 서명 값이 항상 정확하게 보고되는 것은 아니지만 업데이트 서명 필드는 일반적으로 CPU에 적용되는 마이크로코드 업데이트 수정 버전을 나타냅니다.
이
!pcitree
명령을 사용하여 기존 PCI(주변 장치 연결 인터페이스) 디바이스에 대한 공급업체 및 디바이스 식별자(VenDev ID)를 찾습니다.나열된 각 PCI 디바이스에 대해 각 줄의 처음 8자리 16진수 값(DWORD)은 VenDev ID입니다. 공급업체 ID는 실제로 이 값의 두 번째 4자리 숫자입니다. 예를 들어 나열된 첫 번째 디바이스에는 0x00141166 VenDev ID가 있습니다. 디바이스 ID가 0x0014 공급업체 ID가 0x1166. ServerWorks의 공급업체 ID는 0x1166. 따라서 이 출력은 ServerWorks 칩셋을 사용하는 마더보드에 설치된 프로세서에서 출력됩니다.
이 문서에 나와 있는 다른 공급업체 제품은 Microsoft와 무관한 회사에서 제조한 것입니다. Microsoft는 이들 제품의 성능이나 안정성에 관하여 명시적이든 묵시적이든 어떠한 보증도 하지 않습니다.