On Thu, 2008-03-13 at 23:51 +0100, Lennart Poettering wrote:
The problem here is that /var/run is usually cleaned up during bootup, so it's usually fine to just do a kill(pid, 0) to detect whether a daemon is already running. However, PA runs as user daemon and thus cannot write to /var/run. I thus chose /tmp/ copying X and esd a bit. Which is admittedly a bad idea, and also introduces a (minor) security issue.
The best thing to do is to use the DBus session bus. Have pulseaudio grab a bus name such as org.pulseaudio.SessionDaemon.
Pid files and using /tmp is inherently racy and broken.