protonscr

Non-blocking TCP connect() incorrectly returns STATUS_DEVICE_NOT_READY (0xC00000A3) for all destinations, including localhost and destinations with an explicit firewall reject

protonclosed
ValveSoftware/Proton#10054 · opened 2026-08-10 by daro-almeida · updated 2026-08-10 · 1 comments · github
1 matching comments, n / p to jump
Ddaro-almeida 2026-08-10 github

Compatibility Report

  • Name of the game with compatibility issues: Magicka
  • Steam AppID of the game: 42910

System Information

  • GPU: NVIDIA GeForce RTX 3050
  • Video driver version: Nvidia 580.159.03
  • Kernel version: 6.19.14-108.fc42.x86_64
  • Link to full system information report as Gist: https://gist.github.com/daro-almeida/6dd312d5546b67da2be546c926fe91c9
  • Proton version: happens on both 7.0-6 and GE-Proton11-3 (wanted to test an older and a newer one, heard some people got it working right with 7.0-6)

I confirm:

  • [x] that I haven't found an existing compatibility report for this game.
  • [x] that I have checked whether there are updates for my system available.

Symptoms

Black screen for 60-120+ seconds and no audio when loading into a level (also happens on level exit). Enough to time out friends trying to join co-op while stuck on the loading screen.

Cause: Magicka tries to contact two backend hosts that don't exist anymore - opstm.paradoxplaza.com and a GameSparks endpoint (live-g347409i9fs2.ws.gamesparks.net), AWS GameSparks was shut down. That part's expected and not really Proton's fault.

What is a bug: the actual delay comes from Wine's winsock layer,. Non-blocking connect() always returns NTSTATUS 0xC00000A3 (STATUS_DEVICE_NOT_READY, not even a networking code) no matter what it's connecting to - dead external host, localhost, a LAN device with nothing on the port, even a destination with a hard firewall reject in front of it. All identical. Meanwhile curl/ping inside the same Steam Runtime sandbox connect fine to all of the above, so it's not SELinux/firewall/sandbox networking. Also reproduces on a fresh prefix, so not prefix state either.

Stronger evidence it's a Wine bug and not a real failure: on one socket, right after connect failed, status 0xc00000a3 is logged, getpeername()/getsockname() on that same socket succeed. That shouldn't be possible on an actually-failed connect. The real outcome only shows up much later as WSAECONNRESET/broken pipe, way after the bogus failure was already reported.

Reproduction

  1. Launch options: WINEDEBUG=+winsock PROTON_LOG=1 %command%
  2. Load into any level in online play mode, watch it black-screen for 1-2 min
  3. Check $HOME/steam-42910.log for connect failed, status 0xc00000a3 - same result regardless of destination
  4. Pick one of those failed sockets and check for getpeername/getsockname right after - they'll succeed despite the logged failure

magicka-proton-log-excerpt.txt

Kkisak-valve maintainer 2026-08-10 github

Hello @daro-almeida, we're using one issue report per unofficially supported game title, so I've gone ahead and transferred this issue report to https://github.com/ValveSoftware/Proton/issues/458#issuecomment-5240785974.

Proton versions

Launch options

Upstream links

Error codes