We have entered the release preparation phase again. The master branch is frozen, and the first PulseAudio 12.0 release candidate will be published once the remaining release blocker bug is fixed. The bug is about a frequent crash that happens when changing ports on alsa devices. I finished the first version of the patch set for fixing the bug, but in the review discussion there were some ideas for improving the patches, so another version will be needed, which is in progress. There’s a fair bit of labour-intensive refactoring involved, which is why writing the patches is taking some time.
I finally got around writing a second version of an old patch for improving the accuracy of alsa card profile availability information. Alsa card profiles typically have one playback device and one capture device associated with them, and previously only those profiles whose both devices were unavailable were themselves marked as unavailable, so it was possible that during startup PulseAudio would choose to activate a profile whose sink is unavailable, resulting in no audio until the user manually changes the output. Now only profiles whose both devices are available are marked as available, and hence only those profiles are candidates for becoming the initial chosen profile.
It was reported that on OpenSuSE (and apparently on Fedora too) a quick relogin after logging out can result in audio not working. The symptoms included there being two PulseAudio instances running, and the two instances conflicted with each other. It turned out that on logout the PulseAudio daemon from the old login session kept running for a while before terminating itself, but on relogin libpulse didn’t detect the old daemon, and therefore spawned a new instance. The reason for this was that logind (a component of systemd) cleared all files from the user’s “runtime directory” on logout. That directory contains PulseAudio’s socket files, and libpulse depends on those files to determine whether there’s a PulseAudio daemon running. I made a fix that makes PulseAudio exit immediately on logout, so there’s no more risk of the ghost of the old login session messing with the new login session (another solution would have been to use systemd to manage PulseAudio in the login session, but that was an uncomfortably big change for the stable releases of OpenSuSE).
As usual, I also reviewed a bunch of patches and had various discussions on the mailing list and bug tracker.
This post was originally written on 2018-03-05, and first made available to my Patreon supporters. Speaking of Patreon – I’m using crowdfunding in an attempt to make it financially sustainable to continue my volunteer work as a PulseAudio maintainer. If you’d like to help, check out my Patreon page (or Liberapay).