A new fatal field signature turned up in the T3-G PR3 (PR-A) acceptance battery on
fix/producer-corruption-family @ 14272b9a. It matches nothing filed, so it is filed on its own
rather than folded into any tolerated bucket.
Field signature
[DATA_ABORT] FAR=0x2 ELR=0xffff0000404e80a0 ESR=0x96000005 DFSC=0x5 TTBR0=0x10000440dd000 from_el0=0
[FATAL_REGS] label=DATA_ABORT cpu=0 spsr=0x600000c5 esr=0x96000005 far=0x2 elr=0xffff0000404e80a0 sp=0xffff0000431ffd90
x0=0xffff000040800338 x1=0xffff0000431ffec8 x2=0x8 x3=0x68
x4=0x0 x5=0x0 x6=0x0 x7=0x0
x8=0x0 x9=0x2 x10=0x7fa42 x11=0x0
x12=0xffffffffffff00b8 x13=0x50 x14=0x4b8 x15=0xffffffffffff00b8
x16=0x2 x17=0x0 x18=0x0 x19=0xffff000040800338
x20=0x1 x21=0xffff0000431ffe58 x22=0xffff000050393de8 x23=0xffff000050397fb0
x24=0xffff000040606938 x25=0xffff000040606908 x26=0xffff000040606920 x27=0xffff00005032c708
x28=0xffff00005032c708 x29=0xffff0000406068f0 x30=0xffff00004040a2e0
percpu_kst=0xffff000043200000 user_rsp_scratch=0xffff0000431ffd90
STACK=boot_cpu0
[DATA_ABORT] kernel-mode fault, deferring process cleanup
[DATA_ABORT] deferred_tid=9 queued=1
A kernel-mode (EL1, from_el0=0) data abort on a translation fault at level 1 (DFSC=0x5) against
a near-null address, FAR=0x2. The ELR is a valid kernel-text address and the two registers
holding 0x2 (x9, x16) point at a small-integer/uninitialised-pointer dereference rather than a
wild pointer. x19 = 0xffff000040800338 is a SCHEDULER-region address; DAIF in spsr=0x600000c5
shows the fault was taken with interrupts masked, on CPU 0, on the boot CPU stack
(STACK=boot_cpu0), 6 s into the boot.
Why it is not one of the filed faces
| filed |
why this is not it |
| #633 |
[PC_ALIGN], EL0, ELR is a small tid — this is EL1, a data abort, valid ELR |
| #635 |
FAR == ELR, instruction abort ESR=0x8600000e — this is FAR != ELR, data abort |
| #637 |
EL0 resumed at a kernel address, from_el0=1 — this is from_el0=0 |
| #576 / #626 |
zero PC (ELR=0, ESR=0x86000005 / 0x8600000d) — ELR here is valid kernel text |
| #612 |
wild-context DATA_ABORT in the FAR=0x292 region — FAR=0x2 is a different address class |
| #639 |
FAR=0x210 ELR=0x0 with a kernel VA in spsr (architecturally impossible dump class) — this dump is internally consistent |
| #640 |
end-of-RAM external abort, ESR=0x96000010 DFSC=0x10 — different fault class |
Rate and provenance
1 boot in 100 on the clean cortex-a72 profile of the PR-A battery (196/200 GREEN overall; the
other three non-GREEN boots were pre-adjudicated #555, pre-adjudicated #613, and one attributed
#635). Not reproduced on the max profile (0/100), the starved legs (0/100), the service-sequence
gate (0/50) or the strict gate (0/60). The gate correctly bucketed it UNATTRIBUTED; no tolerance
was added for it, so it fails the gate wherever it recurs.
Serial preserved in-repo:
docs/planning/teardown-unification/pr3-acceptance-battery-serials/clean-cortex100-boot97-far0x2-null-data-abort.txt
(with the other three battery serials and a provenance README beside it).
What is not known
The faulting instruction is not resolved to a symbol here — the address resolution needs the exact
boot_tests-profile ELF of 14272b9a, and no producer for the 0x2 value is named. Nothing in
PR-A contains or measures this face: [RESUME_PC_REFUSED: count was 0 on this boot, as on all 330
boots of the battery.
A new fatal field signature turned up in the T3-G PR3 (PR-A) acceptance battery on
fix/producer-corruption-family@14272b9a. It matches nothing filed, so it is filed on its ownrather than folded into any tolerated bucket.
Field signature
A kernel-mode (EL1,
from_el0=0) data abort on a translation fault at level 1 (DFSC=0x5) againsta near-null address,
FAR=0x2. The ELR is a valid kernel-text address and the two registersholding
0x2(x9,x16) point at a small-integer/uninitialised-pointer dereference rather than awild pointer.
x19 = 0xffff000040800338is aSCHEDULER-region address; DAIF inspsr=0x600000c5shows the fault was taken with interrupts masked, on CPU 0, on the boot CPU stack
(
STACK=boot_cpu0), 6 s into the boot.Why it is not one of the filed faces
[PC_ALIGN], EL0, ELR is a small tid — this is EL1, a data abort, valid ELRFAR == ELR, instruction abortESR=0x8600000e— this isFAR != ELR, data abortfrom_el0=1— this isfrom_el0=0ELR=0,ESR=0x86000005/0x8600000d) — ELR here is valid kernel textDATA_ABORTin theFAR=0x292region —FAR=0x2is a different address classFAR=0x210 ELR=0x0with a kernel VA inspsr(architecturally impossible dump class) — this dump is internally consistentESR=0x96000010 DFSC=0x10— different fault classRate and provenance
1 boot in 100 on the clean
cortex-a72profile of the PR-A battery (196/200 GREEN overall; theother three non-GREEN boots were pre-adjudicated #555, pre-adjudicated #613, and one attributed
#635). Not reproduced on the
maxprofile (0/100), the starved legs (0/100), the service-sequencegate (0/50) or the strict gate (0/60). The gate correctly bucketed it
UNATTRIBUTED; no tolerancewas added for it, so it fails the gate wherever it recurs.
Serial preserved in-repo:
docs/planning/teardown-unification/pr3-acceptance-battery-serials/clean-cortex100-boot97-far0x2-null-data-abort.txt(with the other three battery serials and a provenance README beside it).
What is not known
The faulting instruction is not resolved to a symbol here — the address resolution needs the exact
boot_tests-profile ELF of14272b9a, and no producer for the0x2value is named. Nothing inPR-A contains or measures this face:
[RESUME_PC_REFUSED:count was 0 on this boot, as on all 330boots of the battery.