Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.
Bug 451633 - pulseaudio esound compatibility is broken for older binaries
Summary: pulseaudio esound compatibility is broken for older binaries
Alias: None
Product: Fedora
Classification: Fedora
Component: pulseaudio
Version: 9
Hardware: All
OS: Linux
Target Milestone: ---
Assignee: Lennart Poettering
QA Contact: Fedora Extras Quality Assurance
Depends On:
TreeView+ depends on / blocked
Reported: 2008-06-16 10:58 UTC by Jürgen Botz
Modified: 2008-09-09 20:08 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Last Closed: 2008-09-09 20:08:15 UTC

Attachments (Terms of Use)

Description Jürgen Botz 2008-06-16 10:58:59 UTC
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 12:45:26 UTC
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 13:08:53 UTC
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 17:22:33 UTC
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 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.