wasm-emu: document failed root-fix probes and refined TLB trace (E39-E45)

This commit is contained in:
2026-07-23 13:12:22 -04:00
parent 6a9ad9edb6
commit 851f42223b
2 changed files with 37 additions and 1 deletions
+36
View File
@@ -837,3 +837,39 @@ New debug knobs:
- `?storehelpertci` re-enables the mixed store+load/helper fallback even under
`?nostoretci` for A/B testing.
- `?tlbguard=open` remains a negative probe; it did not catch the corruption.
## E39-E45: false fixes and refined corruption proof
Tested two root-fix candidates; both failed and were reverted:
1. Persisting the qemu_ld/qemu_st computed TLB host address across restartable
blocks in `wasmContext`. Hypothesis: `BLOCK_PTR` survives re-entry but WASM
locals do not. Result: `?nostoretci` still crashed 3/3 at the original
`0x4201e210` signature.
2. Reserving `TCG_AREG0` (`TCG_REG_R14`) from wasm register allocation.
Hypothesis: env global clobbering caused CPUArchState spills into the TLB
arrays. Result: `?nostoretci` still crashed 3/3 at the original signature.
Additional trace refinements under `?ramrace=open`:
- `mmu_lookup1` now prints `mmu_idx` plus compact/full TLB entry pointers.
- `TLBTRACE` prints exact compact/full entry addresses.
- `tlb_set_dirty1_locked` logs any dirty-bit C updates for the tracked page.
Observed crash trace:
```text
TLBTRACE pc=0x4201dc96 mmu=3 index=56 entry=0x353b700 full=0x353bf00
read=0x3fcb8000 write=0x3fcb8000 addend=0xc19d4000
full_xlat=0xffffffffc03e4000
FAULTTRACE mmu_lookup1 addr=0x3fcb80a5 mmu=3 index=56
tlb_addr=0x3fcb8200 flags=0x200 entry=0x353b700 full=0x353bf00
full_xlat=0x0 addend=0xc0348000
```
No `tlb_set_dirty1` logs appear before the corruption, so the C dirty/notdirty
path is not writing these bad values. The exact same compact/full TLB entry in
MMU mode 3 changes outside the instrumented C TLB mutation paths. Remaining
suspect is generated WASM control/memory code in the `0x4201e20e` TB; interpreting
that one TB still suppresses the crash.