PulseAudio contains a lot of non-trivial code that has the side effect of triggering a few bugs in libraries it uses.

  1. libtool's libltdl 1.5.22 is buggy and causes PA to abort immediately after startup with a mutex locking error. Upgrade to 1.5.24 at least.
  2. Some recent libc versions have a locking problem in the dynamic module loader, which will cause PulseAudio to freeze randomly. This has been fixed in Fedora glibc 2.6.90-14. rhbz
  3. Some older libc6 versions have problems linking PulseAudio, see #152
  4. libatomic_ops for AMD64 is causes random bugs. Make sure to use a compiler that supports !sync to avoid these issues.
  5. Some distros don't properly configure /dev/tmpfs to enable POSIX shared memory. This will cause PA to print warnings on startup and will cause PA to disable shared memory data transfer.
  6. Some distros don't enable "POSIX" capabilities in the kernel. However, PulseAudio expects them to be available when compiled with support for them. Make sure to enable them in the kernel.
  7. If you compile PA on an embedded platform (i.e. one with exotic CPU) it will fall back to emulated atomic operations. Those are not real-time safe and also very slow. For the ARM case, read this blog story.
  8. There is a known and somewhat annoying issue with PA and ALSA that affects some apps using ALSA output via the PA ALSA plugin (e.g. Ekiga). See #23 and the upstream ALSA Bug for more details. The latest version that is known to compile fine on Solaris is 0.9.6. Newer versions are tested on Linux only. Patches welcome.
Compatibility with Win32 (with mingw32) is described at Windows Support.