HydraIssues

cosmic-pretzel-98: Mercator56 window disappears mid-stream, stream stays open, exit menu breaks
open bug Project: hydrabody Reporter: 22 May 2026 02:16

Description

Observed

During the 2026-05-22 01:49–01:52Z session (ipad-head → cosmic-pretzel-98, session node-4c2-10):

  • Mercator56.exe PID 9984 was alive (Responding: True, WorkingSet 7.8 MB) but MainWindowHandle = 0 — window destroyed without process death
  • Sunshine kept encoding because it never saw the process exit; iPad received a blank desktop capture
  • iPad exit menu stopped working: Sunshine injects the overlay into the app window, which no longer existed
  • hydracluster session showed stale active state (body last heartbeat 01:51:58Z, no further)

Root cause

The Unreal window was destroyed externally (not a GPU crash — no crash report written for today). The process shell lingered as a zombie (7.8 MB working set vs normal 2 GB+). Sunshine has no way to detect window handle loss and continued streaming.

Historical GPU crashes

Three CrashType=GPUCrash reports in C:\Users\tvl-experiencenet\AppData\Local\Mercator56\Saved\Crashes\ from 2026-05-18 (19:24 and 14:24), all with ErrorMessage: GPU Crash dump Triggered on RTX 5090. The 5/18 crashes are a separate recurring pattern (GPU context lost under Sunshine portrait capture load).

UE logging disabled

Mercator56 is launched without -log in C:\Sunshine\config\apps.json: Mercator56.exe -ResX=1080 -ResY=1920 -windowed -ForceRes. UE shipping builds suppress log output without this flag — Saved/Logs/ is empty. Add -log -abslog C:\logs\mercator-talks.log to enable per-session log capture for diagnosis.

Actions needed

  1. Physical reboot of cosmic-pretzel-98 to clear GPU/session state before next stream
  2. Add -log -abslog C:\logs\mercator-talks.log to the Sunshine mercator-talks cmd in hydrabody provisioning
  3. Investigate why the UE window is being destroyed: check if hydrabody stream-hook undo fires too early, or if Sunshine sends a quit signal on session state changes
  4. Consider adding a MainWindowHandle health-check in hydrabody: if the streamed app process is alive but MainWindowHandle == 0 for >5s, treat it as a dead session and trigger stream termination