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:
66
audit-runs/phase-c13-game-dat-files-tbl/broad-impact.md
Normal file
66
audit-runs/phase-c13-game-dat-files-tbl/broad-impact.md
Normal file
@@ -0,0 +1,66 @@
|
||||
# Phase C+13 broad-impact assessment
|
||||
|
||||
## Resolved
|
||||
|
||||
| event | before | after |
|
||||
|---|---|---|
|
||||
| Main idx 103862 `NtCreateFile(game:\\dat\\files.tbl)` | ours=`0x00000000` (synth-success) / canary=`0xc0000034` | ours=`0xc0000034` matches canary bit-for-bit |
|
||||
|
||||
## Advanced
|
||||
|
||||
| metric | before | after | delta |
|
||||
|---|---|---|---|
|
||||
| Main cold-vs-cold matched prefix (canary tid=6 → ours tid=1) | 103,862 | 104,574 | **+712 events** |
|
||||
| Stable digest `imports` | 40,447 | 40,390 | -57 |
|
||||
| Stable digest `instructions` | 50,000,002 | 50,000,007 | +5 |
|
||||
|
||||
`imports -57` is the population of previously-masked missing-disc-file
|
||||
probes: each one used to emit a synth-success kernel.call/return pair
|
||||
plus an `import.call`, ours now emits just a NOT_FOUND kernel.return.
|
||||
Net 57 import-call slots freed = ~28 distinct missing-file paths that
|
||||
the boot validator now sees as NOT_FOUND.
|
||||
|
||||
## Persisted (sister chains, all unchanged)
|
||||
|
||||
| canary_tid | ours_tid | matched | notes |
|
||||
|---|---|---|---|
|
||||
| 4 | 11 | 9 | no divergence in compared events |
|
||||
| 7 | 2 | 29 | no divergence in compared events |
|
||||
| 12 | 7 | 2 | pre-existing KeWaitForSingleObject TIMEOUT/SUCCESS |
|
||||
| 14 | 9 | 39 | pre-existing XAudio init divergence |
|
||||
| 15 | 10 | 15 | no divergence in compared events |
|
||||
|
||||
No sister-chain regression. The fix is scoped to `open_vfs_file`'s
|
||||
disc-path arm; sister tids don't touch this code path during their
|
||||
captured windows.
|
||||
|
||||
## NEW (surfaced by the fix)
|
||||
|
||||
| location | observation |
|
||||
|---|---|
|
||||
| Main idx 104574 | Ordinal-of-call mismatch: canary does **two** sequential `RtlEnterCriticalSection` (104571, 104574); ours does one `Enter` then `Leave`. Likely an error-handling path in Sylpheed's boot validator that takes a nested lock on disc-file NOT_FOUND. |
|
||||
|
||||
This is the expected pattern: scoping the synth-empty surfaces the
|
||||
code branch that handles missing disc files honestly. The new
|
||||
divergence is at the next layer of the boot validator's error-path
|
||||
logic and becomes the Phase C+14 target.
|
||||
|
||||
## Risk: did anything regress in non-cold scenarios?
|
||||
|
||||
- **Kernel unit tests**: 177 → 181 pass; no failures. The new
|
||||
`nt_create_file_non_disc_prefix_missing_still_synthesizes` test
|
||||
proves the legacy synth-empty path is preserved for non-disc
|
||||
prefixes (i.e. writable system partitions).
|
||||
- **Phase B image hash**: unchanged. The fix doesn't touch image
|
||||
loading.
|
||||
- **Lockstep goldens**: `--stable-digest` 3× determinism PASS; no
|
||||
jitter introduced. The C+12 baseline digest was already a
|
||||
stable-mode reference, so the new digest just becomes the C+13
|
||||
baseline.
|
||||
|
||||
## Summary
|
||||
|
||||
One divergence Resolved (idx 103862). +712 events Advanced on the
|
||||
main chain. Zero sister regressions. One NEW divergence at idx
|
||||
104574 — a higher-quality target (error-handling path divergence)
|
||||
than a synth-empty masked divergence.
|
||||
Reference in New Issue
Block a user