Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 417289 - app-emulation/emul-linux-x86-soundlibs-20120520 alsa tries to load 64-bit pulseaudio plugin
Summary: app-emulation/emul-linux-x86-soundlibs-20120520 alsa tries to load 64-bit pul...
Status: RESOLVED OBSOLETE
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Library (show other bugs)
Hardware: AMD64 Linux
: Normal normal (vote)
Assignee: Gentoo ALSA team
URL:
Whiteboard:
Keywords:
: 428362 465336 (view as bug list)
Depends on:
Blocks:
 
Reported: 2012-05-23 18:21 UTC by Hristo Venev
Modified: 2015-06-02 08:33 UTC (History)
5 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
multiarch-safe-dlopen-search-path.patch (multiarch-safe-dlopen-search-path.patch,1.43 KB, patch)
2012-10-12 23:57 UTC, Bartosz Brachaczek
Details | Diff
alsa-plugins.ebuild.diff (alsa-plugins.ebuild.diff,830 bytes, patch)
2012-11-24 10:16 UTC, Pacho Ramos
Details | Diff
51-pulseaudio-probe.conf-r1 (51-pulseaudio-probe.conf-r1,419 bytes, text/plain)
2012-11-24 10:16 UTC, Pacho Ramos
Details
alsa-lib.ebuild.diff (alsa-lib.ebuild.diff,781 bytes, patch)
2012-11-24 10:17 UTC, Pacho Ramos
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Hristo Venev 2012-05-23 18:21:51 UTC
32-bit ALSA tries to load 64-bit plugin because /usr/share/alsa/alsa.conf.d/51-pulseaudio-probe.conf points to a library in /usr/lib/alsa-lib
ALSA lib conf.c:3314:(snd_config_hooks_call) Cannot open shared library /usr/lib/alsa-lib/libasound_module_conf_pulse.so
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM default
Comment 1 Markos Chandras (RETIRED) gentoo-dev 2012-05-23 18:48:30 UTC

*** This bug has been marked as a duplicate of bug 416751 ***
Comment 2 Hristo Venev 2012-05-23 19:04:29 UTC
It's not a duplicate of bug 416751 - it's a different bug.
Comment 3 Markos Chandras (RETIRED) gentoo-dev 2012-05-23 19:42:18 UTC
You posted 4 lines of output and you expected us/me to understand what your problem is? Please post emerge --info and a way to reproduce the terminal output you attached
Comment 4 Pacho Ramos gentoo-dev 2012-05-24 06:29:22 UTC
This config is set by alsa-plugins, but I have no idea about how to set a different config for 32 bits libs (or set two libs to allow it to fallback to /usr/lib32 one when first fails to load)
Comment 5 Andrew Frink 2012-06-05 02:38:07 UTC
Steps to duplicate terminal output:
1) emerge >=app-emulation/emul-linux-x86-soundlibs-20120520 with USE="pulseaudio"
2) emerge wine
3) winecfg and click on the audio tab.

I have alsa configured to send audio through pulseaudio. Sound in 64bt apps works as expected. mplayer, flash, banshee, all work, but as soon as I want wine to play sound I get the same error.

I would try downgrading back to app-emulation/emul-linux-x86-soundlibs-20120127 but I'll have to sort out the blocker circle later. (all of the emul-linux packages seem to depend on each other, so downgrading one or all simply looks difficult).
Comment 6 Pacho Ramos gentoo-dev 2012-06-05 08:51:06 UTC
You don't need to downgrade as this is a problem with native alsa-plugins, it should fallback to lib32, but I have no idea about how could that be done :S
Comment 7 Bartosz Brachaczek 2012-06-20 01:20:09 UTC
My suggestion is to set DT_RUNPATH to "${EPREFIX}"/usr/$(get_libdir)/alsa-lib on libasound.so and change /usr/lib/alsa-lib/libasound_module_conf_pulse.so to just libasound_module_conf_pulse.so in 51-pulseaudio-probe.conf. Is it acceptable?

Alternatively $plugindir/libasound_module_conf_pulse.so could be used in 51-pulseaudio-probe.conf and snd_config_hooks_call() function in alsa-lib could be modified like this:

#include <stddef.h>
...
#define ALSA_PLUGINDIR_VAR "$plugindir"
...
        char *parsed_lib = NULL;
...
                func_name = buf;
        }
        if (0 == strncmp(lib, ALSA_PLUGINDIR_VAR, strlen(ALSA_PLUGINDIR_VAR))) {
                parsed_lib = malloc(strlen(lib) - strlen(ALSA_PLUGINDIR_VAR) + strlen(ALSA_PLUGIN_DIR) + 1);
                if (!parsed_lib) {
                        err = -ENOMEM;
                        goto _err;
                }
                strcpy(parsed_lib, ALSA_PLUGIN_DIR);
                strcat(parsed_lib, lib + strlen(ALSA_PLUGINDIR_VAR));
        } else {
                parsed_lib = lib;
        }
        h = snd_dlopen(parsed_lib, RTLD_NOW);
...
        if (lib != parsed_lib)
                free(parsed_lib);
Comment 8 Aidan Thornton 2012-06-25 16:48:58 UTC
It appears that Ubuntu's original solution to this problem works: https://bugs.launchpad.net/ubuntu/+source/ia32-libs/+bug/273693
Comment 9 Pacho Ramos gentoo-dev 2012-07-28 19:52:22 UTC
*** Bug 428362 has been marked as a duplicate of this bug. ***
Comment 10 Bartosz Brachaczek 2012-10-12 23:57:03 UTC
Created attachment 326420 [details, diff]
multiarch-safe-dlopen-search-path.patch

I suggest taking the same approach as Debian and Ubuntu currently do:

1. Change "/usr/lib/alsa-lib/libasound_module_conf_pulse.so" in media-plugins/alsa-plugins/files/51-pulseaudio-probe.conf to just "libasound_module_conf_pulse.so". Or create new files so that old ebuilds will work correctly. (BTW, you can delete media-plugins/alsa-plugins/files/pulse{,-alsa}.conf).
2. Remove unneeded sed on the .conf file from the alsa-plugins ebuild(s).
3. Patch media-libs/alsa-lib to support relative library paths in .conf files. I'm attaching the patch used by Debian and Ubuntu. (IMO this patch should be upstreamed).
4. Possibly make alsa-plugins with fixes depend on patched alsa-lib.
5. Rebuild app-emulation/emul-linux-x86-soundlibs.
Comment 11 Pacho Ramos gentoo-dev 2012-10-28 11:31:24 UTC
alsa team, ping!
Comment 12 Tony Vroon (RETIRED) gentoo-dev 2012-10-28 12:53:50 UTC
Pacho, if you feel you can fix it, please commit with my blessing. I do not currently operate any multilib systems.
Comment 13 Pacho Ramos gentoo-dev 2012-11-24 10:16:09 UTC
Created attachment 330412 [details, diff]
alsa-plugins.ebuild.diff

I have tried to port ebuilds but it doesn't work, pulse plugin is no longer loaded by default
Comment 14 Pacho Ramos gentoo-dev 2012-11-24 10:16:36 UTC
Created attachment 330414 [details]
51-pulseaudio-probe.conf-r1
Comment 15 Pacho Ramos gentoo-dev 2012-11-24 10:17:30 UTC
Created attachment 330416 [details, diff]
alsa-lib.ebuild.diff
Comment 16 Samuli Suominen (RETIRED) gentoo-dev 2013-05-02 01:02:59 UTC
*** Bug 465336 has been marked as a duplicate of this bug. ***
Comment 17 Lucian Poston 2013-05-02 01:10:46 UTC
/usr/share/alsa/alsa.conf.d/51-pulseaudio-probe.conf uses an absolute path to load 64-bit libraries installed by alsa-plugins. This precludes loading the 32-bit version of libraries installed by app-emulation/emul-linux-x86-soundlibs.


Workaround:
1) Remove "/usr/lib/alsa-lib/" from /usr/share/alsa/alsa.conf.d/51-pulseaudio-probe.conf.
2) echo "/usr/lib32/alsa-lib" > /etc/ld.so.conf.d/alsa32.conf
3) echo "/usr/lib/alsa-lib" > /etc/ld.so.conf.d/alsa64.conf
4) ldconfig


Reproducible: Always

Steps to Reproduce:
1. emerge emul-linux-x86-soundlibs pulseaudio alsa-plugins
2. run a binary that tries to load 32-bit version of sound libraries e.g. run wine in 32-bit prefix that tries to load libasound_module_conf_pulse.so

Actual Results:  
Library linking error. For example, here is an error from a 32-bit wine prefix on a 64-bit system:

ALSA lib conf.c:3314:(snd_config_hooks_call) Cannot open shared library /usr/lib/alsa-libs/libasound_module_conf_pulse.so
ALSA lib seq.c:935:(snd_seq_open_noupdate) Unknown SEQ default


Expected Results:  
working sound system for 32-bit apps where 32-bit emul-linux-x86-soundlibs are dynamically loaded

$ eix -I alsa-plugins
[I] media-plugins/alsa-plugins
     Available versions:  1.0.24 (~)1.0.25 1.0.25-r1 ~1.0.25-r2 1.0.26 {{debug ffmpeg jack libsamplerate pulseaudio speex}}
     Installed versions:  1.0.26(02:18:29 AM 04/09/2013)(ffmpeg pulseaudio -debug -jack -libsamplerate -speex)
     Homepage:            http://www.alsa-project.org/
     Description:         ALSA extra plugins


$ emerge --info
Portage 2.1.11.55 (default/linux/amd64/13.0/desktop, gcc-4.6.3, glibc-2.15-r3, 3.6.11-gentoo x86_64)
=================================================================
System uname: Linux-3.6.11-gentoo-x86_64-Intel-R-_Core-TM-_i7_CPU_930_@_2.80GHz-with-gentoo-2.2
KiB Mem:    12362532 total,  11280336 free
KiB Swap:          0 total,         0 free
Timestamp of tree: Wed, 10 Apr 2013 01:35:01 +0000
ld GNU ld (GNU Binutils) 2.22
ccache version 3.1.9 [enabled]
app-shells/bash:          4.2_p37
dev-java/java-config:     2.1.12-r1
dev-lang/python:          2.7.3-r3, 3.2.3-r2
dev-util/ccache:          3.1.9
dev-util/cmake:           2.8.9
dev-util/pkgconfig:       0.28
sys-apps/baselayout:      2.2
sys-apps/openrc:          0.11.8
sys-apps/sandbox:         2.5
sys-devel/autoconf:       2.13, 2.69
sys-devel/automake:       1.11.6
sys-devel/binutils:       2.22-r1
sys-devel/gcc:            4.6.3
sys-devel/gcc-config:     1.7.3
sys-devel/libtool:        2.4-r1
sys-devel/make:           3.82-r4
sys-kernel/linux-headers: 3.7 (virtual/os-headers)
sys-libs/glibc:           2.15-r3
Repositories: gentoo x-portage java-overlay
ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="*"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -pipe -march=native -mtune=native"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/splash /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-O2 -pipe -march=native -mtune=native"
DISTDIR="/usr/portage/distfiles"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs ccache config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch protect-owned sandbox sfperms splitdebug strict unknown-features-warn unmerge-logs unmerge-orphans userfetch"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://gentoo.cites.uiuc.edu/pub/gentoo/ http://distfiles.gentoo.org"
LANG="en_US.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage /var/lib/layman/java-overlay"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="256-color X a52 aac acl acpi afterimage alsa amd64 anthy ao bash-completion berkdb bidi blink branding bzip2 cairo cdda cdio cdr cjk cli color consolekit cracklib crypt cscope cups cxx dbus dri dts dvd dvdnav dvdr dvi emboss encode escreen exif fading-colors fam fbcondecor ffmpeg firefox firefox3 flac flite fortran furigana g3dvl gd gdbm gif gmail gpm gtk hddtemp iconv imap ipv6 iso14755 jpeg kpathsea latex lcms ldap libnotify libwww lm_sensors lock logrotate mad maildir matroska midi minizip mmx mng modules mono moonlight mp3 mp4 mpeg mudflap multilib ncurses nls nptl nsplugin nvidia ogg opencl opengl openmp pam pango pcre pdf pixbuf png policykit ppds pulseaudio qt3support qt4 quicktime readline rememberthemilk sasl scim screen sdl session sockets speech spell sse sse2 ssl startup-notification svg tcpd thunar tiff truetype udev udisks unicode upower usb vim-syntax vorbis wxwidgets x264 xcb xcomposite xfce xft xinerama xml xrandr xv xvid xvmc zlib zsh-completion" ABI_X86="64" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" INPUT_DEVICES="evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="en en_US" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-3" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_2" RUBY_TARGETS="ruby18 ruby19" USERLAND="GNU" VIDEO_CARDS="nvidia" XFCE_PLUGINS="menu" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, MAKEOPTS, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON
Comment 18 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2015-06-02 08:33:41 UTC
The emul-linux-x86 packages have been removed.