Repository navigation
v26.5.0-alpha.7
Pre-releasemdl 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):
- 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). - Ambiguity guard: a PID claimed by multiple instances' pid files is
PID reuse - every claim on it is dropped. - 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.