February 2017

Socket activation for root

As explained in last month’s report, systemd’s socket activation should be disabled for the root user’s PulseAudio service. I made a patch for that. It took three iterations, with three different approaches, because the first two (ConditionPathIsReadWrite and ConditionCapability) didn’t work as first imagined. In the end I had to use ExecStartPre to run a command that checks whether we’re root. That’s not ideal, because now the socket unit goes into “failed” state with error messages in the syslog/journal, which may make people think that things aren’t working as they should, but that’s the best solution we could come up with. Felipe Sateler submitted a feature request for systemd to add a better way to make units conditional based on the current user.

Build problem with clang

It turned out that the 10.0 release can’t be built with clang. I made a fix for that, and Arun modified our Travis configuration so that builds are also tested with clang, so a similar problem shouldn’t happen any more in the future.

Access control

I reviewed Wim Tayman’s work on adding access control infrastructure for limiting the range of things sandboxed applications can do in PulseAudio. It’s not yet merged (it was kind of prototype-ish code anyway). Wim has updated the code, and it’s now waiting for another review round.

Improving default device selection

Back in September I made patches for improving the default device handling: among the fixed issues were that a device that is not plugged in (e.g. headphones) could be made the default device when better options exist, and at least the D-Bus interface didn’t always send update signals when the default device changes. Now I got the patches reviewed, and based on the feedback, I submitted the second version of the patch set. The second version turned out to cause crashing in module-dbus-protocol, so I had to make yet another version of the patches. The third version is now waiting for review.

module-loopback improvements

Georg Chini submitted a new version of his module-loopback patch set that among other things fixes the initial latency of the loopback. Previously the initial latency could be much too low or much too large depending on circumstances, and while the module did eventually adjust the buffered amount of audio to match the requested latency, that was a slow process. The patch set is pretty large. I started reviewing it (and the biggest latency issues should now be fixed in git master), but there’s a lot more to be reviewed.

OpenEmbedded stuff

I updated the alsa-lib recipe to the newest upstream release.

I started to look into upstreaming the patches that OpenEmbedded has for alsa-tools. At least one of them seemed trivial. I planned to apply it on a fresh clone of the upstream alsa-tools git repository, and test that it builds (just a routine test – it’s actually obvious to see that the patch can’t cause build problems). It turned out that building alsa-tools is a pain. All the tools are separated in their own build systems, but they also have some dependencies on each other. Running “make” at the top level tries to build everything, but the dependencies are handled in a way that doesn’t work out of the box, and one tool also depends on Qt3, which is deprecated and not available in current distributions any more. I pondered a bit whether I should try to make the build system more sane so that “make” at the top level could actually be expected to work, but I don’t think I’ll spend time on that. I believe the problematic tools are used by very few people, so it’s not really worth the effort to make all of them work. I’ll just patch out some of the tools (like OpenEmbedded and other distributions do also) to be able to build the parts that I’m interested in.

Ross Burton reported that the pulseaudio recipe had started producing warnings about text relocations. It seems that something in Ross’s local configuration triggers the problem, because I couldn’t reproduce it with the default configuration. It seems likely that there’s some bug in PulseAudio, but it remains a mystery how to trigger the bug.

This post was originally written on 2017-03-02, 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.