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:
parent
50c0df0683
commit
ab3da28c34
1 changed files with 52 additions and 0 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue