docs: file #260 - portal-network wedge reproduced live (stuck action gate + LOH leak)

First solid reproduction of the Coldeve findings: after sustained walked portal-network use the client wedges - server-round-trip actions (portal use, combat toggle) produce zero outbound send while client-predicted movement still works, and the LOH climbs to 574 MB. Combat toggle x3 with no send is the smoking gun for the one-request-at-a-time use gate latching closed on an unacked UseWithTarget. gcdump captured in the broken state. Supersedes the framing of #256/#257 - both are likely facets. Investigation not started; forbidden workaround (gate timeout) called out explicitly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-07-29 08:24:19 +02:00
parent 50c0df0683
commit ab3da28c34

View file

@ -97,6 +97,58 @@ Copy this block when adding a new issue:
---
## #260 — Portal-network wedge: server-round-trip actions die, LOH leaks — REPRODUCED
**Status:** OPEN — reproduced live, forensics captured, investigation not started
**Severity:** HIGH (renders the client unplayable after sustained portal use)
**Filed:** 2026-07-29 (instrumented Coldeve session, Vulkan backend)
**Component:** interaction/use transaction gate + inbound stream + managed memory
**Supersedes framing of:** #256 (invisible portal-network objects) and #257
(~1.5 GB working set) — both are almost certainly facets of this.
**Reproduction (the first solid one):** on Coldeve (`play.coldeve.ac`), character
Barris, after several portal-network runs returning to the town portal network,
the client wedged: **portals unusable, combat mode won't toggle, portals/signs
missing** — while **movement still works**.
**Evidence captured (`artifacts/coldeve-repro-20260729/`, gitignored, local):**
gcdump taken *in the broken state* (15 MB), full session log with
`[cell-transit]`/`[input]`/`[use-target]`/`equipment` traces, the
`dotnet-counters` CSV, and stderr.
**Two symptoms, established from the traces:**
1. **The outbound action pipeline is wedged.** `CombatToggleCombat Press` × 3
produced **zero outbound send** (movement, being client-predicted, still
produces `[cell-transit]`). Signature of the one-request-at-a-time
interaction/use gate (J5.2) latching closed because a `UseWithTarget` never
received its server ack — a burst of `[use-target] … SEND UseWithTarget`
precedes the hang. Every server-round-trip action (portal use, combat mode)
is then silently dropped; local-only actions still work.
2. **A managed leak on the LOH — this one is ours.** `dotnet-counters` at wedge:
**LOH 601,807,472 B (574 MB)**, process WS 3.2 GB — distinct from the flat
~1.9 GB residency *level* the V11 soak plateaued at (that was benign; this
climbs under live walked play). Fingerprint matches the project's prior LOH
leak class (per-event `float[]`/`byte[]` never released). 185 `equipment:
attached … RightHandCombat` re-attach lines but only 1 CreateObject, so it is
re-attach/replay churn on existing entities, not fresh-object accumulation.
**Hypothesis (unproven, for the investigation):** a jammed inbound stream could
both starve the ack the use-gate waits on AND accumulate LOH buffers — one root,
two symptoms. Or two bugs. The gcdump names the LOH type by retainer; the log
timeline names the unacked request. Not confirmed either way.
**Why the scripted gates missed it:** the V11 portal-churn soak used `/teleloc`,
which enters the transit state machine by a different door than a *walked* portal
transit — exactly the gap the walked-play session was designed to probe.
**Next (investigation, user-approved fix only):** read the gcdump retainer graph
per `reference_memory_leak_toolchain.md`; reconstruct the use-gate timeline from
the log to find the unacked request; determine shared-vs-separate root. Do NOT
patch the symptom (a gate timeout would be the classic forbidden workaround) —
find why the ack never lands.
---
## #259 — Win32 Vulkan surface creation fails machine-wide (`ERROR_UNKNOWN`)
**Status:** OPEN — environment fault, not a product defect; recorded so the next