protonscr

Steam Frame: desktop streaming crashes the Steam client (SIGSEGV in steamui.so) or shows a frozen frame on KDE Plasma Wayland

steamopen Steam clientStreaming
ValveSoftware/steam-for-linux#13699 · opened 2026-10-06 by Yoldark34 · updated 2026-10-08 · 1 comments · github
YYoldark34 2026-10-06 github

Your system information

  • Steam client version: public beta, updater built Oct 6 2026 (package version 1791249696). Also reproduced on stable 1788652215
  • SteamVR build: 25330290
  • Distribution: Ubuntu 26.04.1 LTS, kernel 7.0.0-38-generic
  • Desktop: KDE Plasma 6.6.6, Wayland session (KWin 6.6.6), xdg-desktop-portal 1.21.1, xdg-desktop-portal-kde 6.6.6
  • PipeWire 1.6.2, WirePlumber 0.5.13
  • GPU: NVIDIA GeForce RTX 4080 Laptop GPU, driver 595.91.07 (hybrid with Intel iGPU; Steam started with __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia MESA_VK_DEVICE_SELECT=10de:27e0!, -u WAYLAND_DISPLAY, -pipewire)
  • CPU: Intel Core i9-13980HX
  • Headset: Steam Frame through the Steam Frame wireless adapter (28de:2432), 6 GHz link, about 1.3 ms network time per frame
  • Displays: HDMI-A-3 3840x2160@60 (125 % scale, HDR on) + DP-6 1920x1080@60
  • Native Steam (steam-installer .deb), not Flatpak or Snap
  • Opted into Steam client beta? Yes (also reproduced on stable)
  • Have you checked for system updates? Yes

Please describe your issue in as much detail as possible:

Streaming the PC desktop to the Steam Frame does not work on KDE Plasma Wayland. The same headset and the same steps work on a Windows PC.

Case A: desktop view from SteamVR → Steam client crash

  1. Start SteamVR with the Steam Frame connected.
  2. In the headset, ask to view the desktop.
  3. The KDE portal asks which screen to share. Select the 4K screen.
  4. About 1 second after >>> Starting desktop stream, the Steam client (ubuntu12_32/steam) segfaults and steam.sh restarts it. SteamVR then goes down with it (vrcompositor segfaults when its client disappears).

Every crash has the same stack, in a Steam worker thread:

#0  libc.so.6 + 0x193b2a        (i386 libc, memcpy family)
#1  steamui.so + 0x16804eb
#2  steamui.so + 0x175febc
#3  steamui.so + 0x175ea7a
#4  steamui.so + 0x1760df4
#5  steamui.so + 0x1760027
#6  libtier0_s.so  SteamThreadTools::CThread::ThreadExceptionWrapper

(offsets from the Oct 6 beta; on stable 1788652215 the crash happens at the same point: libc + 0x193b2a ← steamui.so + 0x154c8ab)

The last log lines before each crash:

GameScope focus changed to appID 0
Window title set to SteamVR Status
>>> Starting desktop stream
crash_XXXX.dmp: Uploading dump (out-of-process)
steam.sh: line 995: NNNNN Segmentation fault (core dumped)

Uploaded crash reports (all at desktop stream start):

  • bp-f264bd8e-aa2d-4a14-b7c6-33ab92261006 (2026-10-06 17:43, beta)
  • bp-cdbe0246-9cdb-4953-921a-54f2d2261006 (2026-10-06 17:41, beta)
  • bp-4dc75058-9ed4-4e4f-93f6-371972261006 (2026-10-06 17:21, stable)
  • bp-28cc2e54-cbeb-4422-90a3-90bad2261005 (2026-10-05 14:29, stable)

Case B: Remote Play desktop stream without SteamVR → frozen image

If SteamVR is not running and the Frame connects to the PC desktop, Steam does not crash. Instead, the headset shows the first frame of the 4K screen and the image never updates. The mouse cursor moves (it is sent separately) and audio works. Steam keeps reporting normal timings (capture 16.7, encode 1.8, network 1.5, decode 1.7, display 6.3), so frames are sent but their content never changes.

The PipeWire negotiation is the same in every session: dmabuf is offered first, then Steam falls back to shared memory:

CDesktopCapturePipeWire: Opening DRM render node /dev/dri/renderD129   (NVIDIA)
CDesktopCapturePipeWire: PipeWire stream format changed (size: 3840x2160, format 8, stride 15360, size 33177600, dmabuf: 1)
CDesktopCapturePipeWire: PipeWire stream format changed (size: 3840x2160, format 8, stride 15360, size 33177600, dmabuf: 0)
CDesktopCapturePipeWire: Failed to mmap memory: Bad file descriptor     (in some sessions)
CDesktopCapturePipeWire: Couldn't get image data
>>> Capture method set to Desktop PipeWire NV12 + NVENC H264

Cases A and B both happen when Steam reads the frame from the KWin PipeWire screencast. My guess is that they share the same root cause: case A crashes in a memcpy, and case B keeps re-sending a frame that never changes.

Things ruled out:

  • Network and Wi-Fi: 6 GHz, 160 MHz, about 1.2 Gbit/s, no retries, about 1.5 ms network time per frame.
  • Hardware encoding: same result with it on or off.
  • HDR and wide color gamut on the 4K output: same result with both disabled.
  • Restarting Steam, and switching between stable and beta: no change.
  • The KWin screencast node itself works: it streams BGRx 3840x2160 (visible in pw-top).

Possibly related: #12057 (and #13650, closed as its duplicate) describes the same NVIDIA + KDE Wayland + Steam Frame setup falling back to the CPU desktop capture (dmabuf: 0). This report is different: no game is involved, Bringing streamed game to foreground and Couldn't initialize EGL: 0x3001 never appear in my logs, and the result is a Steam client crash (case A) or a frozen image (case B), not just a slow capture.

Steps for reproducing this issue:

  1. KDE Plasma 6.6 Wayland session on NVIDIA (PRIME offload), native Steam started with -pipewire, Steam Frame paired through the wireless adapter.
  2. Start SteamVR, then from the headset ask to view the desktop and pick a monitor in the KDE portal dialog. Steam client crashes about 1 s after Starting desktop stream (case A).
  3. Without SteamVR, connect the Frame to the PC desktop. The image freezes on the first frame, while the cursor and audio still work (case B).
VVeraxus 2026-10-08 github

This seems very similar to a problem I've been having, where Steam crashes on my desktop Linux host when I use the 8K "Resolution Limit" setting on the Steam Frame or the Vision Pro (via Steam Link).

My native desktop resolution is 5120x1440 and I'm using CachyOS with a Radeon RX 9070 XT, so it's not Nvidia-specific.

Host Specs:

OS: CachyOS x86_64
Kernel: Linux 7.2.8-2-cachyos
Display (LC49G95T): 5120x1440 in 49", 120 Hz [External, HDR]
Desktop Environment: KDE Plasma 6.7.5
Window Manager: KWin (Wayland)
CPU: AMD Ryzen 9 9950X (32) @ 5.76 GHz
GPU: AMD Radeon RX 9070 XT [Discrete]
Memory: 12.33 GiB / 62.34 GiB (20%)
Swap: 532.83 MiB / 62.34 GiB (1%)
Disk (/): 992.36 GiB / 1.82 TiB (53%) - btrfs
Locale: en_US.UTF-8

On Vision Pro, I can set the Resolution Limit to exactly 5120x1440 and that works fine, but on Steam Frame there is no such override, just the dropdown - 4K causes the screen to be downsampled which looks awful, but 8K causes Steam to crash on the host computer.

Reproduce:

  1. Not using SteamVR. On Steam Frame set Settings > Remote Play > Advanced Client Options > Resolution Limit = 7680x4320 (8K)
  2. Connect to PC desktop (e.g. using the Connect button at the top of the Settings page)
  3. Host Steam client segfaults within ~1s (see logs below)

Shell logs. Steam launched using steam --pipewire

>>> Switching video stream from NONE to Desktop_MovieStream
crash_20261008121145_106.dmp[34251]: Uploading dump (out-of-process)
/tmp/dumps/crash_20261008121145_106.dmp
crash_20261008121145_106.dmp[34251]: Finished uploading minidump (out-of-process): success = yes
crash_20261008121145_106.dmp[34251]: response: CrashID=bp-e73f3327-8528-471a-ab8b-2478b2261008
crash_20261008121145_106.dmp[34251]: file ''/tmp/dumps/crash_20261008121145_106.dmp'', upload yes: ''CrashID=bp-e73f3327-8528-471a-ab8b-2478b2261008''
/home/dutch/.local/share/Steam/steamrt64/../steam.sh: line 102: 28016 Segmentation fault      (core dumped) "$STEAMROOT/steamrt64/steam" "$@"
CCrossProcessPipe::BWrite wrote too few bytes: 32 (Broken pipe).  Continuing.
../common/pipes.cpp (902) : stalled cross-thread pipe (pipe is disconnected).
10/08 12:11:47 minidumps folder is set to /tmp/dumps
assert_20261008121147_3.dmp[34294]: Uploading dump (out-of-process)
/tmp/dumps/assert_20261008121147_3.dmp
../common/pipes.cpp (902) : stalled cross-thread pipe (pipe is disconnected).
../clientdll/steamclient.cpp (837) : bufRet.TellPut() == sizeof(uint8)
10/08 12:11:47 minidumps folder is set to /tmp/dumps
assert_20261008121147_6.dmp[34298]: Uploading dump (out-of-process)
/tmp/dumps/assert_20261008121147_6.dmp
../clientdll/steamclient.cpp (837) : bufRet.TellPut() == sizeof(uint8)
../common/processpipe_posix.cpp (519) : Assertion Failed: CCrossProcessPipe::BWrite: 32 (Broken pipe)
10/08 12:11:47 minidumps folder is set to /tmp/dumps
assert_20261008121147_9.dmp[34302]: Uploading dump (out-of-process)
/tmp/dumps/assert_20261008121147_9.dmp
../common/processpipe_posix.cpp (519) : Assertion Failed: CCrossProcessPipe::BWrite: 32 (Broken pipe)
assert_20261008121147_6.dmp[34298]: Finished uploading minidump (out-of-process): success = yes
assert_20261008121147_6.dmp[34298]: response: Discarded=1
assert_20261008121147_6.dmp[34298]: file ''/tmp/dumps/assert_20261008121147_6.dmp'', upload yes: ''Discarded=1''
assert_20261008121147_3.dmp[34294]: Finished uploading minidump (out-of-process): success = yes
assert_20261008121147_3.dmp[34294]: response: Discarded=1
assert_20261008121147_3.dmp[34294]: file ''/tmp/dumps/assert_20261008121147_3.dmp'', upload yes: ''Discarded=1''
steam.sh[34309]: Starting SteamRT3 Steam
CProcessEnvironmentManager is ready, 5 preallocated environment variables.

Signal: 11 (SEGV) si_code: SEGV_MAPERR

               Stack trace of thread 288847:
                #0  0x00007fb41d1b83d5 n/a (/run/host/usr/lib/libc.so.6 + 0x1b83d5)
                #1  0x00007fb415eac506 n/a (steamui.so + 0x16ac506)
                #2  0x00007fb415f8910f n/a (steamui.so + 0x178910f)
                #3  0x00007fb415f89d6b n/a (steamui.so + 0x1789d6b)
                #4  0x00007fb415f8928b n/a (steamui.so + 0x178928b)
                #5  0x00007fb415f89442 n/a (steamui.so + 0x1789442)
                #6  0x00007fb4172fbdba _ZN16SteamThreadTools7CThread22ThreadExceptionWrapperEPv (libtier0_s.so + 0x3cdba)
                #7  0x00007fb4172f9c2d n/a (libtier0_s.so + 0x3ac2d)
                #8  0x00007fb4172fa315 CatchAndWriteMiniDumpExForVoidPtrFn (libtier0_s.so + 0x3b315)
                #9  0x00007fb4172fef02 _ZN16SteamThreadTools7CThread10ThreadProcEPv (libtier0_s.so + 0x3ff02)
                [#10](/issue/ValveSoftware/steam-for-linux/10) 0x00007fb41d0acef1 n/a (/run/host/usr/lib/libc.so.6 + 0xacef1)
                [#11](/issue/ValveSoftware/steam-for-linux/11) 0x00007fb41d14c05c n/a (/run/host/usr/lib/libc.so.6 + 0x14c05c)
                
                Stack trace of thread 286157:
                #0  0x00007fb41d0b6132 n/a (/run/host/usr/lib/libc.so.6 + 0xb6132)
                #1  0x00007fb41d0a94e8 n/a (/run/host/usr/lib/libc.so.6 + 0xa94e8)
                #2  0x00007fb41d0ac4ad n/a (/run/host/usr/lib/libc.so.6 + 0xac4ad)
                #3  0x00007fb4172fe060 _ZN16SteamThreadTools17CThreadSyncObject4WaitEj (libtier0_s.so + 0x3f060)
                #4  0x00007fb3d660f419 n/a (steamclient.so + 0x1a0f419)
                #5  0x00007fb3d65e90ba n/a (steamclient.so + 0x19e90ba)

Crash reports

  • bp-781c96d8-8394-4459-a983-cfd9d2261008 (2026-10-08, build 1791415817)
  • bp-9e8e88ff-afba-46af-8867-381ed2261007 (2026-10-07, build 1791249696)

Pipewire Logs

[2026-10-08 12:12:14][25.150459] CDesktopCapturePipeWire: Opening DRM render node /dev/dri/renderD128
[2026-10-08 12:12:14][25.335412] CDesktopCapturePipeWire: Start signal received.
[2026-10-08 12:12:14][25.335486] CDesktopCapturePipeWire: Finished obtaining persistent permissions, exiting PipeWire until streaming or recording.
[2026-10-08 12:12:14][25.335495] CDesktopCapturePipeWire: Stopping capture session
[2026-10-08 12:14:24][15.595951] CDesktopCapturePipeWire: Opening DRM render node /dev/dri/renderD128
[2026-10-08 12:14:51][42.844688] CDesktopCapturePipeWire: Start signal received.
[2026-10-08 12:14:51][42.844788] CDesktopCapturePipeWire: Finished obtaining persistent permissions, exiting PipeWire until streaming or recording.
[2026-10-08 12:14:51][42.844792] CDesktopCapturePipeWire: Stopping capture session
[2026-10-08 12:16:04][15.470802] CDesktopCapturePipeWire: Opening DRM render node /dev/dri/renderD128
[2026-10-08 12:16:10][20.880138] CDesktopCapturePipeWire: Start signal received.
[2026-10-08 12:16:10][20.880265] CDesktopCapturePipeWire: Finished obtaining persistent permissions, exiting PipeWire until streaming or recording.
[2026-10-08 12:16:10][20.880281] CDesktopCapturePipeWire: Stopping capture session

Launch options