protonscr

Steam UI invisible with CEF `DestroyWindowRequest` loop when CM connections are tampered

steamclosed
ValveSoftware/steam-for-linux#13410 · opened 2026-07-12 by psydvl · updated 2026-07-12 · 2 comments · github
Ppsydvl 2026-07-12 github

System

CachyOS (Arch), kernel 7.1.3-2, GNOME Wayland, AMD RX 9070 XT (RADV 26.1.4).
Steam 1782866176 (also beta 1783717985). CEF 126.0.6478.183.

Problem

When CM/WebSocket auth to *.steamserver.net fails because outbound traffic is tampered (DPI-style packet corruption, not a clean firewall drop), steam and steamwebhelper keep running but there is no window, no tray icon, and no error dialog. steamid stays 0. cef_log.txt repeats Add STEAM_GAMEDestroyWindowRequest.

Connectivity checks to steamconnecttest.com can still report success, so the client appears online while CM auth is broken.

Expected: login UI or a clear “cannot connect to Steam network” state.
Actual: invisible UI / CEF loop.

Plain nft DROP rules or /etc/hosts blocking do not reproduce — Steam logs in via fallback in those cases.

Reproduce

Requires nfqws from https://github.com/bol-van/zapret and Valve prefixes saved as ipv4.txt from https://as32590.net/ipv4.txt.

sudo pkill nfqws 2>/dev/null
sudo nft delete table inet steam_repro 2>/dev/null

# nft: queue outbound TCP 1024-65535 to NFQUEUE 220
sudo nft add table inet steam_repro
sudo nft add chain inet steam_repro output '{ type filter hook output priority 0; policy accept; }'
sudo nft add rule inet steam_repro output \
  meta mark != 0x40000000 tcp dport 1024-65535 queue num 220 bypass

# nfqws: fake desync to Valve prefixes only (run from directory containing ipv4.txt)
sudo ./

[log-excerpts.txt](https://github.com/user-attachments/files/29945895/log-excerpts.txt)

nfqws --dpi-desync-fwmark=0x40000000 --qnum=220 \
  --filter-tcp=1024-65535 --ipset=ipv4.txt \
  --dpi-desync=fake --dpi-desync-repeats=8 \
  --dpi-desync-any-protocol=1 --dpi-desync-cutoff=n4 --new

Launch Steam, wait ~30s → no window, steamid=0.

Control: sudo pkill nfqws; sudo nft delete table inet steam_repro → Steam UI and login work again.

(nfqws alone, without the nft queue rules, has no effect.)

Log excerpts

Broken (connection_log.txt, 2026-07-12):

GetCMListForConnect -- web API call failed (status = 0)
PingWebSocketCM() (cmp2-fra2.steamserver.net:27022) failed talking to cm (timeout/neterror - Invalid)
[Logged Off, 0, 0] CCMInterface::SetSteamID( [U:1:0] )
Connectivity test: result=Connected

Broken (cef_log.txt, 2026-07-12):

Add STEAM_GAME to kAtomsToCache
X error received. Request: DestroyWindowRequest, Error: WindowError{...}

Working after control (connection_log.txt, 2026-07-12):

ConnectionCompleted() (155.133.229.4:27023, WebSocket)
RecvMsgClientLogOnResponse() : 'OK'

See attached log-excerpts.txt. Full logs available on request.

Kkisak-valve maintainer 2026-07-12 github

Hello @psydvl, if you've chosen to selectively break Steam, you can pick up the pieces. This isn't something that is supportable.

Ppsydvl 2026-07-12 github

Hello @psydvl, if you've chosen to selectively break Steam, you can pick up the pieces. This isn't something that is supportable.

@kisak-valve Disagree: the report is not asking Valve to support nfqws or regional DPI tools. The issue is client behavior when CM/WebSocket auth fails due to corrupted outbound traffic: processes run, connectivity tests pass, but there is no window/tray/error and CEF loops DestroyWindowRequest.
Expected: visible offline/login error state.

Nothing extracted yet.