SteamOS icon indicating copy to clipboard operation
SteamOS copied to clipboard

Desktop: KDE / pipewire issues: VolumeMeter object leaks (and more)

Open ardje opened this issue 3 months ago • 5 comments

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:

  1. start floorp/firefox
  2. watch you*.com
  3. open qpwgraph to track changes
  4. open widget, play with audio volume. close. open. close. 5 close application 6 open application.
Image Image Image Image Image Image Image

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.

ardje avatar Oct 11 '25 16:10 ardje

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.

ardje avatar Oct 11 '25 16:10 ardje

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.

Image

ardje avatar Oct 17 '25 12:10 ardje

I haven't been able to reproduce this with Plasma 6.5 so far after a lot of testing.

Pointedstick avatar Oct 23 '25 18:10 Pointedstick

Possibly related to this (though that would not be fixed in Plasma): https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/4901

ford-prefect avatar Oct 28 '25 23:10 ford-prefect

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

Vaxary avatar Nov 14 '25 23:11 Vaxary