Bug 1933111

Summary: Audio locking after system suspends
Product: [Fedora] Fedora Reporter: Tom London <selinux>
Component: pipewireAssignee: Wim Taymans <wtaymans>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 34CC: brunovern.a, vquintans, wtaymans
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: pipewire-0.3.24-1.fc34 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-03-23 00:16:34 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Tom London 2021-02-25 17:21:15 UTC
Description of problem:

I've noticed an issue with audio "locking up" after an automatic suspend: rhythmbox (and other apps) fail to play. Logging out and back in restores audio.
I've noticed this in the journal around the time the system suspended:

Feb 25 08:13:25 localhost.localdomain pipewire-media-session[5920]: no node found for 45
Feb 25 08:13:25 localhost.localdomain gsd-media-keys[5838]: Unable to get default sink
Feb 25 08:13:25 localhost.localdomain pipewire-pulse[5705]: stream 0x563bb7c7fec0: error no node available
Feb 25 08:13:25 localhost.localdomain pipewire-media-session[5920]: no node found for 45
Feb 25 08:13:25 localhost.localdomain pipewire-pulse[5705]: pulse-server 0x563bb86cf810: [Rhythmbox] ERROR command:-1 (invalid) tag:4294967295 error:25 (Input/output error)



Version-Release number of selected component (if applicable):
pipewire-pulseaudio-0.3.22-7.fc34.x86_64

How reproducible:
Every suspend

Steps to Reproduce:
1. Start rhythmbox and wait until system suspends
2. Enter password to resuscitate system
3. Sound is "frozen" 

Actual results:
Silence

Expected results:
Music!

Additional info:

Comment 1 Tom London 2021-02-25 18:06:41 UTC
Noticed this:

[tbl@localhost ~]$ ps agx | grep pipe
   5705 ?        S<sl   0:37 /usr/bin/pipewire-pulse
   5913 ?        S<sl   0:08 /usr/bin/pipewire
   5920 ?        S<l    0:00 /usr/bin/pipewire-media-session
   8950 pts/0    S+     0:00 grep --color=auto pipe
[tbl@localhost ~]$

Killing off pipewire-media-session:

[tbl@localhost ~]$ sudo kill -9 5920
[tbl@localhost ~]$ ps agx | grep pipe
   5705 ?        S<sl   0:37 /usr/bin/pipewire-pulse
   5913 ?        S<sl   0:08 /usr/bin/pipewire
   5920 ?        Z<     0:00 [pipewire-media-] <defunct>
   8963 pts/0    S+     0:00 grep --color=auto pipe
[tbl@localhost ~]$ 
and /usr/bin/pipewire:

[tbl@localhost ~]$ sudo kill -9 5913
[tbl@localhost ~]$ ps agx | grep pipe
   5705 ?        S<sl   0:38 /usr/bin/pipewire-pulse
   9001 ?        S<sl   0:00 /usr/bin/pipewire
   9004 ?        S<l    0:00 /usr/bin/pipewire-media-session
   9012 pts/0    S+     0:00 grep --color=auto pipe
[tbl@localhost ~]$ 

And sound is restored.

Comment 2 Wim Taymans 2021-03-01 08:47:27 UTC
Are you playing through HDMI? What does pavucontrol say is the profile of the audio card after resume? does toggling the profile restore sound again?

Comment 3 Tom London 2021-03-01 14:34:17 UTC
Yes, I'm playing through HDMI.

Here is what pavucontrol says just after boot (normal playback) for "Output Devices":

Built-in Audio Digital Stereo (HDMI)    

Port: HDMI/DisplayPort (plugged in)   

"Configuation" says:

Built-in Audio

Profile: Digital Stereo (HDMI) Output

I'll let it "Sleep/Suspend" and post what it shows...

Comment 4 Tom London 2021-03-01 14:43:21 UTC
I set "Blank screen" in Settings->Power to 2 minutes (it was set at 15 minutes previously) and started rhythmbox.

After 2 minutes the screen blanks and rhythmbox mutes.

After entering my password to resume, pavucontrol shows no devices in "Output Devices" and "Configuration" tab shows Profile as "Off".

Comment 5 Tom London 2021-03-01 14:47:08 UTC
[tbl@localhost ~]$ ps agx | grep pipewire
   2700 ?        S<sl   0:20 /usr/bin/pipewire-pulse
   2894 ?        S<sl   0:06 /usr/bin/pipewire
   2899 ?        S<l    0:00 /usr/bin/pipewire-media-session
   4797 pts/0    S+     0:00 grep --color=auto pipewire
[tbl@localhost ~]$ kill -9 2899
[tbl@localhost ~]$ ps agx | grep pipewire
   2700 ?        S<sl   0:20 /usr/bin/pipewire-pulse
   2894 ?        S<sl   0:06 /usr/bin/pipewire
   2899 ?        Z<     0:00 [pipewire-media-] <defunct>
   4807 pts/0    S+     0:00 grep --color=auto pipewire
[tbl@localhost ~]$ kill -9 2894
[tbl@localhost ~]$ ps agx | grep pipewire
   2700 ?        S<sl   0:20 /usr/bin/pipewire-pulse
   4823 ?        S<sl   0:00 /usr/bin/pipewire
   4825 ?        S<l    0:00 /usr/bin/pipewire-media-session
   4845 pts/0    S+     0:00 grep --color=auto pipewire

After doing both "kill -9"s and restarting pavucontrol, the profile reappears.

Rhythmbox does not "restore", I have to kill it and restart it to get playback.

Comment 6 Tom London 2021-03-06 14:29:22 UTC
This shell sequence restores sound when it freezes:

     kill -9 $(pgrep pipewire | tail -2)

Comment 7 Wim Taymans 2021-03-08 11:21:33 UTC
Upstream issue: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/466

Comment 8 Tom London 2021-03-10 16:58:56 UTC
Just FYI, issue persists for me with pipewire-0.3.23-2.fc34.x86_64

Comment 9 Fedora Update System 2021-03-18 14:30:41 UTC
FEDORA-2021-2c994d0609 has been submitted as an update to Fedora 34. https://bodhi.fedoraproject.org/updates/FEDORA-2021-2c994d0609

Comment 10 Tom London 2021-03-18 15:45:05 UTC
I upgraded:

pipewire-0.3.24-1.fc33.x86_64.rpm
pipewire-alsa-0.3.24-1.fc33.x86_64.rpm
pipewire-gstreamer-0.3.24-1.fc33.x86_64.rpm
pipewire-libs-0.3.24-1.fc33.x86_64.rpm
pipewire-pulseaudio-0.3.24-1.fc33.x86_64.rpm

and rebooted.

I then allowed the screen to blank (having set the timeout to 1 minute).

After "resuming", rhythmbox did not resume the clip it was playing prior, but switching to a new music clip did indeed play correctly.

Also "pavucontrol" shows the HDMI device.

Thanks!

Comment 11 Fedora Update System 2021-03-18 21:48:24 UTC
FEDORA-2021-2c994d0609 has been pushed to the Fedora 34 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf upgrade --enablerepo=updates-testing --advisory=FEDORA-2021-2c994d0609`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2021-2c994d0609

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 12 Fedora Update System 2021-03-23 00:16:34 UTC
FEDORA-2021-2c994d0609 has been pushed to the Fedora 34 stable repository.
If problem still persists, please make note of it in this bug report.