Desktop: KDE / pipewire issues: VolumeMeter object leaks (and more)
Your system information
- Steam client version: Version: 1759533550
- SteamOS version:
- (deck@steamdeck ~)$ cat /etc/steamos-atomupd/manifest.json { "product": "steamos", "release": "holo", "variant": "steamdeck", "default_update_branch": "stable", "arch": "amd64", "version": "3.8.0", "buildid": "20251001.1000" }
- Opted into Steam client beta?: Yes
- Opted into SteamOS beta?:Yes
- Have you checked for updates in Settings > System?: Yes
Issues are desktop KDE related I have multiple issues with KDE+pipewire which in the end make plasma hang until I kill pipewire several times. This is one issue I found by just digging into the issue.
Please describe your issue in as much detail as possible:
For changing volume on my music output (now using headphone output), I regularly visit the volume widget on the desktop menu bar. Since it was reacting very strange (I could not select the headphone output) I opened qpwgraph to check on things. And I noticed that whenever I visited that widget more and more PlasmaPA-VolumeMeter objects are created by plasma in pipewire. If I stop the application, the objects end up unattached and never removed.
This is highly likely a KDE bug and won't have issues with Gaming Mode. But it will stop the Steam Deck from being usable as a DJ console (Yeah, I can icewm --replace and everything is fine ;-) ). VolumeMeters are dynamic, and so is output device, so even rerouting an application to another output than default should not cause this.
Steps for reproducing this issue:
- start floorp/firefox
- watch you*.com
- open qpwgraph to track changes
- open widget, play with audio volume. close. open. close. 5 close application 6 open application.
I've added screenshots hopefully in the right order. You can see unattached objects and a lot of attached objects.
Then I go play with the widget. It grows and grows. Then I close the application. All objects are detached, but still active. The left side are the sound sources, the middle are volume objects, and the right are the physical sound sinks and other physical devices.
-- In the end, I think it's KDE that is very bad at handling all audio events, and it ends up freezing plasma, until I kill pipewire. But with this new insight, I might try to kill portions of KDE. I have turned off bluetooth because the more audio events (bluetooth headset), the faster plasma hangs. But it still hangs. And one of the major audio events is my monitor turning on from standby. That's a hdmi channel addition. And when it suspends, another one. I say this because if it's not KDE, it might also have problems in gaming mode.
After killing plasma and starting it by hand (because the audio widget is not a separate process), everything seems to work as it should: it removes volume objects. So this means that some event needs to trigger the audio widget to create new objects and never clean up the old ones. It will happen. But my steam deck has an uptime of 5 days.
Updated to: Client: Version: 1760657741
Steamos: "buildid": "20251008.1000" Everything still RO.
Updated this morning. Switched the output from floorp from steamdeck headphones to HDMI, stopped floorp, and yes... It's loosing objects. This whole week after restarting plasma, everything seems fine, but after the update this morning it is weird again. I assume KDE has a race in handling the change of output device and the events that pipewire emits with that.
I haven't been able to reproduce this with Plasma 6.5 so far after a lot of testing.
Possibly related to this (though that would not be fixed in Plasma): https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/4901
I've noticed that this only happens when the audio you have in the background is playing but you pause it and it stays loaded. In this scenario the source doesn't get freed. After this the extra count of PlasmaPA-VolumeMeters depend on how many paused sources you have. I have used a Youtube video as an example in the background where at first it was playing, then it was paused, but I haven't scrolled away (it works the same with Reddit).
I'll share a video where it can be seen in action:
https://github.com/user-attachments/assets/ac0271e8-83c7-47dc-9a8c-5bd09644ff20