Skip to content

aarch64: fix/562-761-aarch64-testing-profile breaks the strict boot-test gate (0/25 vs main 15/15) #786

Description

@ryanbreen

Signature

docker/qemu/run-aarch64-boot-test-strict.sh 25 (soft-float, --features boot_tests, -cpu cortex-a72) is 0/25 (0%) on
fix/562-761-aarch64-testing-profile at 88199ba4 (round-6 head
95de851e plus a docs-only commit; kernel/src identical to 95de851e).

Controlled comparison, same host, same script, back to back, same day
(2026-09-04):

kernel result
origin/main @ 78179c56, --features boot_tests 15/15 (100%)
this branch @ 95de851e/88199ba4, same features 0/25 (0%)

Both kernels were built from a from-scratch userspace/programs/build.sh --arch aarch64 + scripts/create_ext2_disk.sh --arch aarch64 in their own
worktree, so this is not a stale-fixture artifact.

Failure classes observed (branch only; 0/15 main-baseline boots show any of these six)

Of 25 branch boots:

  • 12/25 -- [TEST:filesystem:block_wedge_oracle:FAIL:...], three
    distinct messages: "second lock was not sleep-permitted" (5),
    "parked lock was not sleep-permitted" (6), "requester never parked on
    the real wait queue" (1).
  • 9/25 -- a CPU exception, and it is the same one every time:
    [INSTRUCTION_ABORT] FAR=0x40004530 ELR=0x40004530 ESR=0x8200000e IFSC=0xe TTBR0=0x40200000 from_el0=1. Bit-identical FAR/ELR/ESR/TTBR0
    across all 9 occurrences.
  • 1/25 -- [TEST:process:census_widen_oracle:FAIL:census widening mutation oracle failed].
  • 1/25 -- "Futex handoff oracle marker missing or failed".
  • 1/25 -- "Userspace not detected" (109/109 boot_tests suite completed
    with BOOT_TESTS:PASS, but the poll window closed before userspace
    liveness printed).
  • 1/25 -- "Exec smoke did not complete".

0 of these six match the pre-adjudicated aarch64 gate-noise set
(#555 softirq, #576 EL1 NULL-PC, #626, #586 starved wake-loss, #609
network kthread). #576's own signature is ELR=0, FAR=0; this branch's
instruction abort is ELR=FAR=0x40004530 in 9/9 occurrences (grep -c
against each of the 9 CPU exception-classified serials in
S-battery-all25/) -- a fixed, different address from #576's, so a
distinct fault.

#599 ("run-aarch64-boot-test-strict.sh is red on main (15-20/20)") was
filed 2026-08-18 against an older main revision and describes a different
shape (a silent wedge after [EXEC_SMOKE:LAUNCH], no fault marker). Main
has since recovered: the 15/15 clean run above is current-day evidence that
whatever #599 was measuring no longer reproduces at HEAD. This branch's
0/25 is not a restatement of #599.

Why this is the branch's regression, not host noise

The block_wedge_oracle and instruction-abort classes are content-specific
(a named test failing with a fixed message; a fault at a byte-identical
address 9/9 times), not the kind of thing host CPU contention produces.
fix/562-761-aarch64-testing-profile's own change is exactly the kind of
thing that could break block_wedge_oracle's timing assumptions: it moves
CPU 0's boot sequence off a preemption-pinned context and onto an ordinary,
preemptible kernel thread (docs/planning/green-program/aarch64-testing/TESTING-PROFILE-REVIVAL-2026-09-04.md,
"One relocation, widened at round 3"). block_wedge_oracle exercises the
same virtio-blk wait/wake path that pin removal changes the scheduling
context of.

Evidence

The full run log (25 boots) is
docs/planning/green-program/aarch64-testing/serials/prove/S-battery-run-log.txt;
the main-baseline run log (15 boots) is
docs/planning/green-program/aarch64-testing/serials/prove/S-main-baseline-run-log.txt;
all 25 branch serials are the 25 files under
docs/planning/green-program/aarch64-testing/serials/prove/S-battery-all25/.

Scope

Filed during an independent PROVE pass of
fix/562-761-aarch64-testing-profile round 6
(docs/planning/green-program/aarch64-testing/TESTING-PROFILE-PROVE-2026-09-04.md).
Not fixed here -- the PROVE task is scoped to running the batteries and
reporting; RCA needs the project's GDB-based kernel-debugging workflow
against context_switch.rs/block_mmio.rs, which is Tier-2 territory.
This is a blocking finding for that branch: the strict gate cannot be
used to accept the merge while it is 0/25.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions