Older applications which use esound (and are not dynamically linked against current libesound) don't work. In other words, binary compatibility is broken. The pulseaudio esound compatibility layer creates socket /tmp/.esd-<uid> Esound applications try to open /tmp/.esd This is as much an esound as a pulse issue, since esd now does the same thing. But since pulse is the currently "supported" sound server, and it was Lennart who changed this behavior in esound (Aug 2007, according to the changelog in esound.spec), I'll file the bug here. The work-around is to create a symlink from /tmp/.esd to /tmp/.esd-<uid>.
The problem with /tmp/.esd is that it breaks multi-user setups. And hence I fear this is an unfixable problem.
Sorry, that's unacceptable. Binary compatibility must be preserved, and other parts of the system make a lot of investment in that policy, so you can't just break sound because you think it isn't easy. Anyway, what's the point of your esound compatibility layer when it isn't actually compatible??? Anyway, I can think of some solutions... like creating the symlink like I do and updating it when users are switched. This should work pretty well, because the symlink is dereferenced at the time an app opens, thereafter it has a filehandle to the right socket even through a user switch.
We break binary compatibility all the time -- in certain areas which we don't consider part of the official ABI to program aginst. And quite frankly I'd consider the socket path to be part of the non-exported interface of esd. The esound compat layer works perfectly fine, if you build your stuff dynamically. Also, it's not just Fedora which does things like this. It's Ubuntu too. And other clueful distros. And this patch to our esd libs has been ok'ed by esd upstream. if you need this kind of compatibility then feel free to create the link yourself. Alternatively you may enable network access via paprefs. libesd will try to connect to the well known esd port on localhost if it doesn't find the unix socket to work. Or finally, just edit default.pa and pass 'socket=/tmp/.esd' to module-protocol-esd-unix.