Skip to content

v26.5.0-alpha.7

Pre-release
Pre-release

Choose a tag to compare

@StarsailsClover StarsailsClover released this 05 Sep 10:24
· 4 commits to main since this release
v26.5-alpha.7
4b70751

mdl v26.5.0-alpha.7 — fix cross-instance window misattribution (field bug report)

Field report from alpha.5 usage: openlumin's game error screen was
mapped to ANOTHER instance's name by the instance-to-window mapping.

Root cause: collect_running_pids trusted runtime/pid files
unconditionally. A crashed game leaves the file behind; Windows later
reuses that PID for a different instance's java process; the window
mapping then attributed that window to whichever stale pid file
claimed it - and find_for_instance Path 1 even rewrote the
synthesized pid-N label with the caller's instance name, making the
misattribution authoritative.

Three-layer fix (decision logic extracted as pure, unit-tested
functions):

  1. Identity validation: a PID is only attributed when the process is
    alive, is java/javaw, and its command line carries the instance's
    gameDir marker (instances/, boundary-checked so instance-a
    never matches instances/instance-ab).
  2. Ambiguity guard: a PID claimed by multiple instances' pid files is
    PID reuse - every claim on it is dropped.
  3. find_for_instance Path 1 falls through to title match when the PID
    fails identity validation instead of trusting it.

Environment note: the local IPv6 route died on this dev host and DNS
prefers AAAA, so reqwest hits a 30s timeout while curl succeeds over
IPv4. The pre-existing test_fetch_manifest (network) therefore fails
locally but is green in CI on all three platforms. Not a code issue.

Tests: 28 lib + 188 bin (+2), zero warnings.

Instability disclaimer: alpha pre-release - expect rough edges.