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

这是操作系统挂起还是硬件挂起问题?

答案1

一般保护故障 一般保护故障可能因多种原因而发生。最常见的是:

段错误(权限、类型、限制、读/写权限)。当CPL != 0 时执行特权指令。在保留寄存器字段中写入1 或写入无效值组合(例如PE=0 且PG=1 的CR0)。引用或访问空描述符。保存的指令指针指向引起异常的指令。

相关内容