FA-89681 / Instruction set emulation / Open access
Directory permissions ignored · case 01
A user or write access succeeds through a supervisor-only or read-only directory entry.
ROOT CAUSE
Only the leaf PTE permission bits are checked.
VERIFIED REPAIR
Require W and U on both the directory and the table entry.
Unsuccessful approach: OR-ing the levels grants access if either level allows it.
Case contract
Input [va, write, user, root, mem]; mem maps decimal-string physical addresses to 32-bit entries (missing = 0). VA splits 10/10/12 (directory index va>>22, table index (va>>12)&0x3FF, offset). The PDE is at root + 4*dir, the PTE at (PDE frame << 12) + 4*table. Bits: P=1, W=2, U=4, A=32, D=64; frame = entry >> 12. Not present -> ['fault', err]; write without W on both levels or user access without U on both levels -> ['fault', err | 1], where err = 2 if write plus 4 if user. On success set A on both entries and D on the PTE only for writes, returning ['ok', physical address, sorted [address, entry] of memory].
Why this case matters
MMU emulation must combine permissions across levels and update accessed/dirty bits exactly as guest operating systems expect.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(*args):
va, write, user, root, mem = args
mem = dict(mem)
d = va >> 22
t = (va >> 12) & 0x3FF
off = va & 0xFFF
err = (2 if write else 0) | (4 if user else 0)
pde_a = str(root + d * 4)
pde = mem.get(pde_a, 0)
if not pde & 1:
return ['fault', err]
pte_a = str((pde >> 12 << 12) + t * 4)
pte = mem.get(pte_a, 0)
if not pte & 1:
return ['fault', err]
if (write and not (pte & 2)) or (user and not (pte & 4)):
return ['fault', err | 1]
mem[pde_a] = pde | 32
mem[pte_a] = pte | 32 | (64 if write else 0)
return ['ok', (pte >> 12 << 12) | off, [[k, mem[k]] for k in sorted(mem, key=int)]]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('user read of user page', [4206859, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 20747, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('user write sets dirty', [4206863, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 20751, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('high table index', [6304011, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 33035, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24577], ['10252', 32807], ['12288', 28679], ['12292', 36869]]]), ('kernel write to read-only page', [4210955, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('user access through supervisor directory', [8388875, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 5]), ('write through read-only directory', [8388875, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('kernel read through read-only directory', [8392971, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 37131, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36901]]]), ('directory entry not present', [12583179, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 6]), ('leaf not present', [4218880, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 0])], [('user read of user page', [4207115, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21003, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('user write sets dirty', [4207119, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21007, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('high table index', [6304267, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 33291, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24577], ['10252', 32807], ['12288', 28679], ['12292', 36869]]]), ('kernel write to read-only page', [4211211, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('user access through supervisor directory', [8389131, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 5]), ('write through read-only directory', [8389131, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('kernel read through read-only directory', [8393227, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 37387, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36901]]]), ('directory entry not present', [12583435, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 6]), ('leaf not present', [4222976, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 0])], [('user read of user page', [4207371, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21259, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('user write sets dirty', [4207375, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21263, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('high table index', [6304523, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 33547, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24577], ['10252', 32807], ['12288', 28679], ['12292', 36869]]]), ('kernel write to read-only page', [4211467, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('user access through supervisor directory', [8389387, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 5]), ('write through read-only directory', [8389387, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('kernel read through read-only directory', [8393483, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 37643, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36901]]]), ('directory entry not present', [12583691, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 6]), ('leaf not present', [4227072, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 0])], [('user read of user page', [4207627, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21515, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('user write sets dirty', [4207631, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21519, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('high table index', [6304779, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 33803, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24577], ['10252', 32807], ['12288', 28679], ['12292', 36869]]]), ('kernel write to read-only page', [4211723, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('user access through supervisor directory', [8389643, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 5]), ('write through read-only directory', [8389643, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('kernel read through read-only directory', [8393739, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 37899, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36901]]]), ('directory entry not present', [12583947, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 6]), ('leaf not present', [4231168, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 0])], [('user read of user page', [4207883, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21771, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('user write sets dirty', [4207887, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21775, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('high table index', [6305035, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 34059, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24577], ['10252', 32807], ['12288', 28679], ['12292', 36869]]]), ('kernel write to read-only page', [4211979, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('user access through supervisor directory', [8389899, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 5]), ('write through read-only directory', [8389899, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('kernel read through read-only directory', [8393995, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 38155, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36901]]]), ('directory entry not present', [12584203, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 6]), ('leaf not present', [4235264, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 0])]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| user read of user page | ['ok', 20747, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]] | ['ok', 20747, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]] | Passed |
| user write sets dirty | ['ok', 20751, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]] | ['ok', 20751, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]] | Passed |
| high table index | ['ok', 33035, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24577], ['10252', 32807], ['12288', 28679], ['12292', 36869]]] | ['ok', 33035, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24577], ['10252', 32807], ['12288', 28679], ['12292', 36869]]] | Passed |
| kernel write to read-only page | ['fault', 3] | ['fault', 3] | Passed |
| user access through supervisor directory | ['ok', 28939, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28711], ['12292', 36869]]] | ['fault', 5] | Failed |
| write through read-only directory | ['ok', 28939, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28775], ['12292', 36869]]] | ['fault', 3] | Failed |
| kernel read through read-only directory | ['ok', 37131, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36901]]] | ['ok', 37131, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36901]]] | Passed |
| directory entry not present | ['fault', 6] | ['fault', 6] | Passed |
| leaf not present | ['fault', 0] | ['fault', 0] | Passed |
SHA-256 / dc8dd93c24b1f9f854d56d31b44cc3c6445ec6aaf628a564d9edeed04425c648
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(*args):
va, write, user, root, mem = args
mem = dict(mem)
d = va >> 22
t = (va >> 12) & 0x3FF
off = va & 0xFFF
err = (2 if write else 0) | (4 if user else 0)
pde_a = str(root + d * 4)
pde = mem.get(pde_a, 0)
if not pde & 1:
return ['fault', err]
pte_a = str((pde >> 12 << 12) + t * 4)
pte = mem.get(pte_a, 0)
if not pte & 1:
return ['fault', err]
if (write and not ((pde | pte) & 2)) or (user and not ((pde | pte) & 4)):
return ['fault', err | 1]
mem[pde_a] = pde | 32
mem[pte_a] = pte | 32 | (64 if write else 0)
return ['ok', (pte >> 12 << 12) | off, [[k, mem[k]] for k in sorted(mem, key=int)]]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('user read of user page', [4206859, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 20747, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('user write sets dirty', [4206863, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 20751, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('high table index', [6304011, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 33035, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24577], ['10252', 32807], ['12288', 28679], ['12292', 36869]]]), ('kernel write to read-only page', [4210955, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('user access through supervisor directory', [8388875, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 5]), ('write through read-only directory', [8388875, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('kernel read through read-only directory', [8392971, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 37131, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36901]]]), ('directory entry not present', [12583179, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 6]), ('leaf not present', [4218880, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 0])], [('user read of user page', [4207115, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21003, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('user write sets dirty', [4207119, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21007, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('high table index', [6304267, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 33291, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24577], ['10252', 32807], ['12288', 28679], ['12292', 36869]]]), ('kernel write to read-only page', [4211211, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('user access through supervisor directory', [8389131, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 5]), ('write through read-only directory', [8389131, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('kernel read through read-only directory', [8393227, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 37387, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36901]]]), ('directory entry not present', [12583435, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 6]), ('leaf not present', [4222976, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 0])], [('user read of user page', [4207371, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21259, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('user write sets dirty', [4207375, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21263, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('high table index', [6304523, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 33547, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24577], ['10252', 32807], ['12288', 28679], ['12292', 36869]]]), ('kernel write to read-only page', [4211467, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('user access through supervisor directory', [8389387, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 5]), ('write through read-only directory', [8389387, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('kernel read through read-only directory', [8393483, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 37643, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36901]]]), ('directory entry not present', [12583691, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 6]), ('leaf not present', [4227072, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 0])], [('user read of user page', [4207627, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21515, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('user write sets dirty', [4207631, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21519, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('high table index', [6304779, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 33803, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24577], ['10252', 32807], ['12288', 28679], ['12292', 36869]]]), ('kernel write to read-only page', [4211723, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('user access through supervisor directory', [8389643, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 5]), ('write through read-only directory', [8389643, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('kernel read through read-only directory', [8393739, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 37899, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36901]]]), ('directory entry not present', [12583947, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 6]), ('leaf not present', [4231168, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 0])], [('user read of user page', [4207883, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21771, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('user write sets dirty', [4207887, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21775, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('high table index', [6305035, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 34059, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24577], ['10252', 32807], ['12288', 28679], ['12292', 36869]]]), ('kernel write to read-only page', [4211979, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('user access through supervisor directory', [8389899, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 5]), ('write through read-only directory', [8389899, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('kernel read through read-only directory', [8393995, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 38155, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36901]]]), ('directory entry not present', [12584203, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 6]), ('leaf not present', [4235264, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 0])]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| user read of user page | ['ok', 20747, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]] | ['ok', 20747, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]] | Passed |
| user write sets dirty | ['ok', 20751, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]] | ['ok', 20751, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]] | Passed |
| high table index | ['ok', 33035, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24577], ['10252', 32807], ['12288', 28679], ['12292', 36869]]] | ['ok', 33035, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24577], ['10252', 32807], ['12288', 28679], ['12292', 36869]]] | Passed |
| kernel write to read-only page | ['ok', 24843, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24673], ['10252', 32775], ['12288', 28679], ['12292', 36869]]] | ['fault', 3] | Failed |
| user access through supervisor directory | ['ok', 28939, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28711], ['12292', 36869]]] | ['fault', 5] | Failed |
| write through read-only directory | ['ok', 28939, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28775], ['12292', 36869]]] | ['fault', 3] | Failed |
| kernel read through read-only directory | ['ok', 37131, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36901]]] | ['ok', 37131, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36901]]] | Passed |
| directory entry not present | ['fault', 6] | ['fault', 6] | Passed |
| leaf not present | ['fault', 0] | ['fault', 0] | Passed |
SHA-256 / a8f85a7c3259bb4459e9f9a83bc889009cdf79750db9988bbaaacf22f919524d
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(*args):
va, write, user, root, mem = args
mem = dict(mem)
d = va >> 22
t = (va >> 12) & 0x3FF
off = va & 0xFFF
err = (2 if write else 0) | (4 if user else 0)
pde_a = str(root + d * 4)
pde = mem.get(pde_a, 0)
if not pde & 1:
return ['fault', err]
pte_a = str((pde >> 12 << 12) + t * 4)
pte = mem.get(pte_a, 0)
if not pte & 1:
return ['fault', err]
if (write and not (pde & pte & 2)) or (user and not (pde & pte & 4)):
return ['fault', err | 1]
mem[pde_a] = pde | 32
mem[pte_a] = pte | 32 | (64 if write else 0)
return ['ok', (pte >> 12 << 12) | off, [[k, mem[k]] for k in sorted(mem, key=int)]]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('user read of user page', [4206859, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 20747, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('user write sets dirty', [4206863, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 20751, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('high table index', [6304011, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 33035, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24577], ['10252', 32807], ['12288', 28679], ['12292', 36869]]]), ('kernel write to read-only page', [4210955, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('user access through supervisor directory', [8388875, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 5]), ('write through read-only directory', [8388875, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('kernel read through read-only directory', [8392971, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 37131, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36901]]]), ('directory entry not present', [12583179, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 6]), ('leaf not present', [4218880, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 0])], [('user read of user page', [4207115, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21003, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('user write sets dirty', [4207119, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21007, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('high table index', [6304267, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 33291, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24577], ['10252', 32807], ['12288', 28679], ['12292', 36869]]]), ('kernel write to read-only page', [4211211, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('user access through supervisor directory', [8389131, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 5]), ('write through read-only directory', [8389131, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('kernel read through read-only directory', [8393227, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 37387, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36901]]]), ('directory entry not present', [12583435, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 6]), ('leaf not present', [4222976, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 0])], [('user read of user page', [4207371, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21259, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('user write sets dirty', [4207375, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21263, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('high table index', [6304523, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 33547, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24577], ['10252', 32807], ['12288', 28679], ['12292', 36869]]]), ('kernel write to read-only page', [4211467, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('user access through supervisor directory', [8389387, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 5]), ('write through read-only directory', [8389387, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('kernel read through read-only directory', [8393483, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 37643, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36901]]]), ('directory entry not present', [12583691, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 6]), ('leaf not present', [4227072, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 0])], [('user read of user page', [4207627, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21515, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('user write sets dirty', [4207631, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21519, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('high table index', [6304779, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 33803, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24577], ['10252', 32807], ['12288', 28679], ['12292', 36869]]]), ('kernel write to read-only page', [4211723, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('user access through supervisor directory', [8389643, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 5]), ('write through read-only directory', [8389643, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('kernel read through read-only directory', [8393739, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 37899, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36901]]]), ('directory entry not present', [12583947, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 6]), ('leaf not present', [4231168, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 0])], [('user read of user page', [4207883, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21771, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('user write sets dirty', [4207887, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 21775, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]), ('high table index', [6305035, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 34059, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24577], ['10252', 32807], ['12288', 28679], ['12292', 36869]]]), ('kernel write to read-only page', [4211979, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('user access through supervisor directory', [8389899, 0, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 5]), ('write through read-only directory', [8389899, 1, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 3]), ('kernel read through read-only directory', [8393995, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['ok', 38155, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36901]]]), ('directory entry not present', [12584203, 1, 1, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 6]), ('leaf not present', [4235264, 0, 0, 4096, {'4100': 8199, '8204': 20487, '8208': 24577, '10252': 32775, '4104': 12289, '12288': 28679, '12292': 36869}], ['fault', 0])]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| user read of user page | ['ok', 20747, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]] | ['ok', 20747, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]] | Passed |
| user write sets dirty | ['ok', 20751, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]] | ['ok', 20751, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]] | Passed |
| high table index | ['ok', 33035, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24577], ['10252', 32807], ['12288', 28679], ['12292', 36869]]] | ['ok', 33035, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24577], ['10252', 32807], ['12288', 28679], ['12292', 36869]]] | Passed |
| kernel write to read-only page | ['fault', 3] | ['fault', 3] | Passed |
| user access through supervisor directory | ['fault', 5] | ['fault', 5] | Passed |
| write through read-only directory | ['fault', 3] | ['fault', 3] | Passed |
| kernel read through read-only directory | ['ok', 37131, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36901]]] | ['ok', 37131, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36901]]] | Passed |
| directory entry not present | ['fault', 6] | ['fault', 6] | Passed |
| leaf not present | ['fault', 0] | ['fault', 0] | Passed |
SHA-256 / d0dc04aab67a160880b8d83dd808b5f6d8d89019f60eb8208111188639653cb1
Verification & scope
A deterministic bounded teaching model of one emulator rule; the instruction semantics are a stipulated contract inspired by common ISAs and are not a claim of cycle-exact or architectural conformance. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.
Observations recorded using Python 3.12.14 at 2026-09-29T14:51:19.630320+00:00.
Case digest / 94dd7efebbb22760039bd79e2c9fdc1e839df5001bc4c52fac93e966151edd3c