X64 예외 유형 - 0D(#GP - 일반 보호)

X64 예외 유형 - 0D(#GP - 일반 보호)

가끔 다음과 같은 오류 로그가 표시됩니다.

https://bugzilla.redhat.com/show_bug.cgi?id=1641402

!!!! X64 Exception Type - 0D(#GP - General Protection)  CPU Apic ID - 00000000 !!!!
ExceptionData - 0000000000000000
RIP  - 00000000BFF8E976, CS  - 0000000000000038, RFLAGS - 0000000000210202
RAX  - 0000000000000001, RCX - 0000000000000010, RDX - AFAFAFAFAFAFAFA7
RBX  - 0000000000000020, RSP - 00000000BFF7EF60, RBP - 00000000BEC00F98
RSI  - AFAFAFAFAFAFAFAF, RDI - 00000000BFFA1720
R8   - 0000000000000000, R9  - 0000000000000028, R10 - 0000000000000020
R11  - 0000000000000002, R12 - 00000000BED0E618, R13 - 00000000BED0E818
R14  - 00000000BFF7F038, R15 - 00000000BED0E658
DS   - 0000000000000030, ES  - 0000000000000030, FS  - 0000000000000030
GS   - 0000000000000030, SS  - 0000000000000030
CR0  - 0000000080010033, CR2 - 0000000000000000, CR3 - 00000000BFC01000
CR4  - 0000000000000668, CR8 - 0000000000000000
DR0  - 0000000000000000, DR1 - 0000000000000000, DR2 - 0000000000000000
DR3  - 0000000000000000, DR6 - 00000000FFFF0FF0, DR7 - 0000000000000400
GDTR - 00000000BFBEE698 0000000000000047, LDTR - 0000000000000000
IDTR - 00000000BF1B2018 0000000000000FFF,   TR - 0000000000000000

OS 정지 문제입니까, 아니면 하드웨어 정지 문제입니까?

답변1

일반 보호 결함 일반 보호 결함은 여러 가지 이유로 발생할 수 있습니다. 가장 일반적인 것은 다음과 같습니다.

분할 오류(권한, 유형, 제한, 읽기/쓰기 권한) CPL != 0일 때 특권 명령어를 실행합니다. 예약된 레지스터 필드에 1 또는 잘못된 값 조합(예: PE=0 및 PG=1인 CR0)을 씁니다. null 설명자를 참조하거나 액세스합니다. 저장된 명령어 포인터는 예외를 발생시킨 명령어를 가리킵니다.

관련 정보