protonscr

Regression of #9204: startup SIGSEGV in bundled libaudio.so via libpulse (threaded-ml) — stable client 1784778118, pipewire-pulse

steamclosed
ValveSoftware/steam-for-linux#13434 · opened 2026-07-23 by Frydac · updated 2026-07-23 · 1 comments · github
FFrydac 2026-07-23 github

Your system information

  • Steam client version (build number or date): 1784778118 (stable, self-updated 2026-07-23 ~06:33 local)
  • Distribution (e.g. Ubuntu): Manjaro Linux (rolling), kernel 6.18
  • Opted into Steam client beta?: No (stable)
  • Have you checked for system updates?: Yes (fully updated)
  • Steam Logs: steam-logs.tar.gz
  • GPU: Nvidia GeForce RTX 3060 Ti, proprietary driver 610.43.03

Audio server: PipeWire's pulse emulation (pipewire-pulse 1.6.7), host libpulse 0.24.3.
glibc 2.43.

Please describe your issue in as much detail as possible:

After the stable client auto-updated on 2026-07-23 (build 1784778118, which rewrote
ubuntu12_32/steam and ubuntu12_32/libaudio.so), the client segfaults during
startup
, right after the sysinfo/audio init and before the main UI appears. The core
is dumped every launch (100% reproducible here).

libaudio.so is Valve's own bundled library (NEEDED: libtier0_s.so, libvstdlib_s.so,
libpulse.so.0, libopenal.so.1) — it was replaced by this update.

The crashing thread is the PulseAudio threaded mainloop (threaded-ml). PulseAudio's
pdispatch runs a server-reply callback that points into libaudio.so, which then
dereferences a bad pointer:

Thread (SIGSEGV) "threaded-ml":
#0  libaudio.so + 0x4de72          <-- faults on push (%eax), eax = bad pointer
#1  libpulse.so.0 + 0x215e8
#2  libpulsecommon-17.0.so + 0x3ed24
#3  pa_pdispatch_run  (libpulsecommon-17.0.so + 0x400bb)
#4  libpulse.so.0 + 0xf697
#5  libpulsecommon-17.0.so + 0x44fe9
#6  libpulsecommon-17.0.so + 0x45e7d
#7  pa_mainloop_dispatch  (libpulse.so.0 + 0x23161)
#8  pa_mainloop_iterate
#9  pa_mainloop_run

The main thread is simultaneously inside libaudio.so reading a file
(steamui.so -> libaudio.so -> _IO_getc -> read), consistent with #9204's
context_get_card_info_callback path (PulseAudio card-info reply). Full backtrace
of all threads:

Workaround that confirms the trigger: making PulseAudio unreachable for the client
process only lets it start normally, with no coredump:

PULSE_SERVER=/nonexistent steam

With that set, the client and the full steamwebhelper/UI tree come up fine (the only
remaining message is an unrelated, non-fatal "Steam Linux Runtime 2.0 (soldier)
unsupported version 0" assert). So the crash is specifically in the client-audio
PulseAudio path in the updated libaudio.so, on a PipeWire-pulse system.

Steps for reproducing this issue:

  1. On a system using pipewire-pulse (not native PulseAudio), be on the stable client
    build 1784778118 (2026-07-23).
  2. Launch steam from a terminal.
  3. Client segfaults during startup before the UI appears; coredumpctl shows SIGSEGV
    in libaudio.so on the threaded-ml thread (stack above). Launching with
    PULSE_SERVER=/nonexistent avoids it.
Kkisak-valve maintainer 2026-07-23 github

Hello @Frydac, this issue is already being tracked at #13174. Closing as a duplicate.

Nothing extracted yet.