fix(diagnostics): sampler can no longer crash the run it measures; worm skip default off
Harness round. Every launched run is in Saved/HarnessFixAcceptance_20260914.ledger.txt.
- FVoxelStackSampler: two sampler-on runs had died in EndPlay (logs stop after "workers drained",
before the latency summary). The lifecycle teardown is now serialised, registration TLS is
tagged by session, stale worker registrations are cleared safely, and in-process DbgHelp
initialisation/symbolisation is REMOVED. The measured process now writes raw PCs only; symbol
resolution is deferred to after process exit. (An offline symboliser is still needed for
readable tables; it is queued first in the next round.)
- voxel.WormBlockSkip default 1 -> 0: it measured neutral (26b3476). The code, the proven bound
and the soundness test are kept for a tighter skip later.
- Harness (Saved/*.ps1, not tracked): a writable DDC under the plugin's Saved\DDC with
-ddc=NoZenLocalFallback, fixing the DerivedDataBackends.cpp:208 startup fatal. UE 5.7 Windows
was verified NOT to honour -nocrashreports for its startup monitor, so the harness runs
unattended with dialogs forced off plus a PID-scoped CrashReportClient watchdog. Failures
still exit non-zero, and a run without its final summary line is rejected.
Acceptance: 10 consecutive mixed runs, 7 of them sampler-on, all PASS; no new crash folders, dumps,
dialogs or lingering processes. Other runs: one smoke run failed on a PowerShell
HashSet.ToArray() compatibility bug in the harness (Unreal itself exited cleanly); its retries and
the export passed. Export OBJ unchanged (b3e5f4c3..9b377).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TaFdXhTdYMkW1xrV6ApT6Y
This commit is contained in:
1 parent
26b34765d5
commit
11f0c1335b
4 files changed
+127
-24
No files matched your search
@@ -87,8 +87,8 @@ namespace
|
||||
|
||||
// A proved N1-above-threshold block skips both worm noise calls. The switch is parsed once
|
||||
// on the same scalar entry point as the other generation A/B switches; 0 is the exact legacy
|
||||
// path, and 1 is the default after the proof/soundness test passes.
|
||||
int32 GVoxelForgeWormBlockSkip = 1;
|
||||
// path and remains the default until a tighter skip is justified by a future measurement.
|
||||
int32 GVoxelForgeWormBlockSkip = 0;
|
||||
FAutoConsoleVariableRef CVarVoxelForgeWormBlockSkip(
|
||||
TEXT("voxel.WormBlockSkip"),
|
||||
GVoxelForgeWormBlockSkip,
|
||||
|
||||
Reference in new issue
Block a user