Bug 451633 - pulseaudio esound compatibility is broken for older binaries
pulseaudio esound compatibility is broken for older binaries
Product: Fedora
Classification: Fedora
Component: pulseaudio (Show other bugs)
All Linux
low Severity high
: ---
: ---
Assigned To: Lennart Poettering
Fedora Extras Quality Assurance
Depends On:
  Show dependency treegraph
Reported: 2008-06-16 06:58 EDT by Jürgen Botz
Modified: 2008-09-09 16:08 EDT (History)
2 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2008-09-09 16:08:15 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Jürgen Botz 2008-06-16 06:58:59 EDT
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>.
Comment 1 Lennart Poettering 2008-06-16 08:45:26 EDT
The problem with /tmp/.esd is that it breaks multi-user setups. And hence I fear
this is an unfixable problem.
Comment 2 Jürgen Botz 2008-06-16 09:08:53 EDT
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.
Comment 3 Lennart Poettering 2008-06-17 13:22:33 EDT
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.

Note You need to log in before you can comment on or make changes to this bug.