Skip to content

map: abandoned content runs leak content-band BattleNpcs into the base zone actor pool #194

Description

@swstegall

Symptom

Content-band BattleNpcs outlive their content run. During the 2026-07-04 Ubuntu investigation, the five Man0l0 deck-fight actors (0x460C00080x460C000C: 3× JellyfishScenarioLimsaLv00, FighterAllyOpeningAttacker, FighterAllyOpeningHealer) spawned by the 06:50:53Z content start appeared in every subsequent session's zone-in bundle for zone 193 — including a brand-new character at quest sequence 0 who had never started the deck fight (map-server.log lines 1329/1474/1629/1800/1944/2109, packet-log census 06:13→07:49Z).

Mechanism

  • The only teardown path for the content roster is the director's ContentFinished (scripts/lua/directors/Quest/QuestDirectorMan0l001.lua). If the owning session dies mid-content (crash, disconnect), nothing despawns the content actors.
  • The base-zone neighbour scan has no content-band exclusion: actors carrying CONTENT_ACTOR_BAND_BIT (0x0004_0000, map-server/src/world_manager.rs:507) are streamed to base-zone viewers who are not in that content instance.

Impact

Before the case-resolution fix (branch feature/ubuntu, f6897e5) this is what converted a one-time content-warp crash into a deterministic kick on every later login (the leaked bit-2 BattleNpcs were re-sent to every session). With the case-resolution fix the client no longer crashes, but unrelated players still see stale battle actors from someone else's abandoned run.

Suggested fix

Either (or both):

  1. Tear down the content group — despawn its content-band actors — when the owning session ends while a content run is active (ContentFinished must not be the only teardown path).
  2. Exclude content-band actors from base-zone zone-in bundles for viewers not participating in that content instance.

Found during the Ubuntu opening-quest root-cause investigation (branch feature/ubuntu, commit f6897e5).

Metadata

Metadata

Assignees

No one assigned

    Labels

    Garlemald ServerFor work units related to Garlemald Server.bugSomething isn't working

    Projects

    Status
    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions