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
*** This bug has been marked as a duplicate of bug 416751 ***
It's not a duplicate of bug 416751 - it's a different bug.
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
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)
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).
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
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);
It appears that Ubuntu's original solution to this problem works: https://bugs.launchpad.net/ubuntu/+source/ia32-libs/+bug/273693
*** Bug 428362 has been marked as a duplicate of this bug. ***
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.
alsa team, ping!
Pacho, if you feel you can fix it, please commit with my blessing. I do not currently operate any multilib systems.
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
Created attachment 330414 [details] 51-pulseaudio-probe.conf-r1
Created attachment 330416 [details, diff] alsa-lib.ebuild.diff
*** Bug 465336 has been marked as a duplicate of this bug. ***
/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
The emul-linux-x86 packages have been removed.