In test process!
In test process!
In test process!
In test process!
In test process!
In test process!
In test process!
In test process!
In test process!
In test process!
In test process!
In test process!
In test process!
Error code: PROTECTION_VIOLATION
ExceptionStack {
instruction_pointer: 0x2160e1,
code_segment: 0x8,
cpu_flags: 0x206,
stack_pointer: 0x400042d8,
stack_segment: 0x10
}
InterruptDescription {
vector: 14,
mnemonic: "#PF",
description: "Page Fault",
irqtype: "Fault",
source: "Any memory reference."
}
Page fault while accessing 0xffffffffffffffe8
Root Cause
When a process is finished and jumps to the process_ret function, the rbp value is 0x0.
The process_ret function has the following generated assembly:
The page fault happens at instruction 0x2160e0 because we attempt to access memory located at -0x18(%rbp), which translates to value stored at (0x0 - 0x18).
Using gdb, we can see that this value is:
(gdb) p/x 0x0 - 0x18
$2 = 0xffffffffffffffe8
Note: This is a Day 1 scheduling error that is being revealed now that our bootloader properly protects this memory location.
Error
Root Cause
When a process is finished and jumps to the
process_ret
function, therbp
value is 0x0.The
process_ret
function has the following generated assembly:The page fault happens at instruction
0x2160e0
because we attempt to access memory located at-0x18(%rbp)
, which translates tovalue stored at (0x0 - 0x18)
.Using gdb, we can see that this value is:
Note: This is a Day 1 scheduling error that is being revealed now that our bootloader properly protects this memory location.