handoff: VSync/event-wedge fixes + iterate 2.A–2.BC research notes
Source changes (dormant parity infra, retained from iterate 2.AI/2.AO): - xenia-kernel/exports.rs: nt_create_event manual_reset polarity + related event wiring - xenia-gpu/mmio_region.rs: D1MODE_VBLANK_VLINE_STATUS hardcode parity Also lands the audit-runs/ analysis notes (.md/.txt/.json digests) for the iterate 2.x VSync/0x10e8/0x1004 wedge investigation. Raw trace dumps (.jsonl/.gz/.csv/.stdout) and agent worktrees (.claude/) are gitignored as regenerable local artifacts — see memory + HANDOFF for the running findings. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
51
audit-runs/phase-c7-XamTaskCloseHandle/re-validation.md
Normal file
51
audit-runs/phase-c7-XamTaskCloseHandle/re-validation.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# Phase C+7 — XamTaskCloseHandle re-validation
|
||||
|
||||
## Gate matrix
|
||||
|
||||
| # | gate | result |
|
||||
|---|---|---|
|
||||
| 1 | cvar-OFF determinism 50M (3 runs) | ✅ all 3 = `43e80e57beeb77565b47d4bec173e96d` (UNCHANGED from C+7 baseline; stable-digest is field-coarse) |
|
||||
| 2 | Phase B `image_loaded_sha256` | ✅ `ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18` (matches baseline) |
|
||||
| 3 | Phase A main chain matched-prefix ≥ 102158 | ✅ **102164** (+6 from 102158) |
|
||||
| 3b | tid=4 → 11 unchanged from 9 | ✅ 9 (no regression) |
|
||||
| 3c | tid=7 → 2 unchanged from 29 | ✅ 29 (no regression) |
|
||||
| 3d | tid=12 → 7 unchanged from 2 | ✅ 2 (no regression) |
|
||||
| 3e | tid=14 → 9 unchanged from 39 | ✅ 39 (no regression) |
|
||||
| 3f | tid=15 → 10 unchanged from 15 | ✅ 15 (no regression) |
|
||||
| 4 | Both engines build clean | ✅ |
|
||||
| 5 | Phase A emitter determinism (2 runs) | ✅ both = `eca3ac9a1dd5810bc5b0fa54f58b9ba5` (new baseline; C+7 was `90fb28…` but excluded `return_value` from canonical hash — this run includes it) |
|
||||
| 6 | Unit tests | ✅ 152 → **156** (+4 new, 0 regressions) |
|
||||
|
||||
## Stable-digest comparison
|
||||
|
||||
Baseline (C+6½ / C+7 keSetEvent): `instructions=50M, imports=40470, unimpl=0, draws=0, swaps=1, unique_render_targets=0, shader_blobs_live=0, texture_cache_entries=0`
|
||||
|
||||
Post C+7 XamTaskCloseHandle: identical. Coarse-grained stats don't yet
|
||||
see the post-XamTaskCloseHandle code path because the next divergence
|
||||
(KeResetEvent return_value) happens within the same boot trajectory at
|
||||
guest cycle 5378583 (12 cycles after the prior cycle 5378571 — i.e.
|
||||
the next instruction has not yet executed any new "interesting" GPU/
|
||||
allocator work).
|
||||
|
||||
## Phase A determinism
|
||||
|
||||
ours.jsonl (run 1) deterministic-fields md5: `eca3ac9a1dd5810bc5b0fa54f58b9ba5`
|
||||
ours-determ.jsonl (run 2): `eca3ac9a1dd5810bc5b0fa54f58b9ba5`
|
||||
|
||||
Byte-identical. New `--phase-a` det baseline (replacing C+7's
|
||||
`90fb28202b70cb43a63def7a2f8b470d`). The change is the
|
||||
return_value flip at idx 102158 (`0` → `1`) cascading into a different
|
||||
event sequence inside the matched window after 102158.
|
||||
|
||||
## Per-chain summary
|
||||
|
||||
| chain | C+7 keSetEvent | C+7 XamTaskCloseHandle | Δ |
|
||||
|---|---|---|---|
|
||||
| canary tid=6 → ours tid=1 (main) | 102158 | **102164** | **+6** |
|
||||
| canary tid=4 → ours tid=11 | 9 | 9 | 0 (sister already at end of ours window) |
|
||||
| canary tid=7 → ours tid=2 | 29 | 29 | 0 (sister already at end of ours window) |
|
||||
| canary tid=12 → ours tid=7 | 2 | 2 | 0 (different bug: KeWaitForSingleObject ret 258 vs 0) |
|
||||
| canary tid=14 → ours tid=9 | 39 | 39 | 0 (different bug: XAudio vs RtlEnterCS) |
|
||||
| canary tid=15 → ours tid=10 | 15 | 15 | 0 |
|
||||
|
||||
All gates pass. No regressions.
|
||||
Reference in New Issue
Block a user