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