Skip to content

WSLg PulseAudio/RAIL audio playback becomes unrecoverable after Strawberry/GStreamer is paused #1468

Description

@GIS-user

Windows build number:

10.0.26200.0

Your Distribution version:

26.04

Your WSL versions:

WSL version: 2.7.3.0
Kernel version: 6.6.114.1-1
WSLg version: 1.0.73
MSRDC version: 1.2.6676
Direct3D version: 1.611.1-81528511
DXCore version: 10.0.26100.1-240331-1435.ge-release
Windows version: 10.0.26200.8655

WSLg ( x86_64 ): 1.0.73+Branch.main.Sha.23e4d92dd13d1a614357e30c4b5a96f9981abc2c
Built at: Wed Jan 14 23:41:44 UTC 2026
Azure Linux: VERSION="3.0.20260107"
pulseaudio: c33051f2296af748ac5cd13e51abfac4d129e4c7
FreeRDP: c4030980b29322a9cb2190711a5fadeeeb8b6a33
weston: 2318fecaeac1f1a2d5a7a042c34d931c71dae04c

  • App/audio stack:
    • Strawberry 1.2.18
    • Qt 6.10.2
    • GStreamer 1.28.2
    • PulseAudio server reported by WSLg: 17.0-25-gc3305
    • Strawberry output: pulsesink

Steps to reproduce:

Although this bug is triggered specifically by an app (Strawberry - https://github.com/strawberrymusicplayer/ ), the bug appears to be in WSLg pulseaudio since the bug does not exist when running the app in a non WSL linux environment.

Strawberry works initially under WSLg, but after playback is paused, the audio path can become unrecoverable. The most reliable trigger is:

  1. Start Strawberry.
  2. Play a song.
  3. Pause the song.
  4. Switch away from Strawberry, or open Settings and save any setting.
  5. Return to Strawberry and press Play.

WSL logs:

pulseaudio.log
weston.log
stderr.log

WslLogs-2026-06-11_15-50-52.tar.gz

Current pactl info when healthy:

Server String: unix:/mnt/wslg/PulseServer
Server Name: pulseaudio
Server Version: 17.0-25-gc3305
Default Sink: RDPSink
Default Source: RDPSource

Current relevant Pulse modules:

module-stream-restore
module-suspend-on-idle
module-role-cork
module-rdp-sink sink_name=RDPSink
module-rdp-source source_name=RDPSource
module-native-protocol-unix socket=/mnt/wslg/PulseServer auth-anonymous=true

WSL dumps:

No response

Expected behavior:

Playback resumes from a pause

Actual behavior:

Strawberry UI remains responsive, but playback does not resume. Sometimes pactl shows a Strawberry stream stuck/corked. Other times there is no active Strawberry sink-input even though Strawberry still appears to think it can resume.

All audio is blocked. For example, before triggering this bug, I could play an mp3 file from the command line using mplayer. However, after triggering this bug, I get:

AO: [pulse] Init failed: Timeout
Failed to initialize audio driver 'pulse'

Using Stop instead of Pause avoids the issue. If I stop playback before changing settings, playback can be started again normally.

When the bug occurs, the bad state appears related to paused/corked playback rather than the Settings dialog itself.

At one point, pactl list sink-inputs showed the Strawberry stream as:

application.name = "Strawberry"
media.role = "music"
Corked: yes

In other reproductions, after the pause/settings trigger:

pactl info

still worked, but there were no Strawberry sink inputs. Sending strawberry --play externally could sometimes create a new sink input, but the normal UI play/resume path did not recover.

I also tested the same MP3 file outside Strawberry with plain GStreamer:

gst-launch-1.0 -q playbin uri='file:///path/to/file.mp3' audio-sink=pulsesink video-sink=fakesink

That worked when WSLg audio was awake, and PulseAudio remained responsive afterward. So the file itself does not seem to be the trigger.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions