FAILURE MAP
← Case archive

FA-89691 / Instruction set emulation / Open access

Dirty bit set on reads · case 01

Reading a page marks it dirty.

Verified by executionVariant 1 · 9 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The dirty bit is set on every successful access.

VERIFIED REPAIR

Set D only for writes.

Unsuccessful approach: Also dirtying on user reads still marks clean pages dirty.

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 (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
    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 fixtureActualExpectedOutcome
user read of user page['ok', 20747, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]['ok', 20747, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]Failed
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', 32871], ['12288', 28679], ['12292', 36869]]]['ok', 33035, [['4100', 8231], ['4104', 12289], ['8204', 20487], ['8208', 24577], ['10252', 32807], ['12288', 28679], ['12292', 36869]]]Failed
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', 36965]]]['ok', 37131, [['4100', 8199], ['4104', 12321], ['8204', 20487], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36901]]]Failed
directory entry not present['fault', 6]['fault', 6]Passed
leaf not present['fault', 0]['fault', 0]Passed

SHA-256 / e3d742283ac426d9e06ba45f17b2e134b551b83d90882f55a2d101cf2e6ff56d

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 or user 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 fixtureActualExpectedOutcome
user read of user page['ok', 20747, [['4100', 8231], ['4104', 12289], ['8204', 20583], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]['ok', 20747, [['4100', 8231], ['4104', 12289], ['8204', 20519], ['8208', 24577], ['10252', 32775], ['12288', 28679], ['12292', 36869]]]Failed
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 / 26ab9bb509767294c1d3b1bb9d5943ad9d41fc503cc09dfae7be9f0c55328794

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 fixtureActualExpectedOutcome
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.801024+00:00.

Case digest / 4a62e3f88360fe95edc29c9546c54d344220041d9b0693caf7f90e9790b8bbd3