Bugzilla – Bug 143415
Sound mixing from 32-bit applications seems broken in x86-64
Last modified: 2007-02-26 13:20:19 UTC
In SuSE 10_x64, I think there is a problem with sound mixing from 32-bit applications (when running a 64-bit kernel). I used the script recommended in bug 117989, namely LD_PRELOAD="$LD_PRELOAD:${exec_prefix}/\$LIB/libaoss.so" exec "$@" but I get multiple warnings ERROR: ld.so: object '/$LIB/libaoss.so' from LD_PRELOAD cannot be preloaded: ignored. Now, if I put 'exec "$@" ' on a separate line, I don't get this error, programs invoked through this script seem to run, BUT skype still "monopolizes" the sound card and flashplayer and realplayer play muted, the latter two without any error output! Similarly, 32-bit java (invoked through firefox, which has to be 32-bit so it can play flashplayer and realplayer) runs but if another application is using the sound card, java's sound output is muted (eventhough ALSA compatibility is installed). Now, if I try to invoke programs through "esddsp -m <program>' (as discussed in bug #117989), I get this error: ERROR: ld.so: object '/usr/lib64/libesd.so.0' from LD_PRELOAD cannot be preloaded: ignored. and the sound mixing from 32-bit application fails. These four 32-bit programs (skype, flashplayer, Realplayer, and 32-bit java), as mentioned above, are few but very important. (I also tried gizmoproject, skype's competitor, which, like skype, has oss output, with similarly disheartening results.) I use a 64-bit laptop, a Compaq Presario, with the nVidia chipset and nVidia 64MB video card, so a sound card with hardware mixing is not an option for me. The 32-bit MPlayer seems to be very well behaved with either alsa or esd output. If I remember correctly, I was able to do software mixing of the above applications under artsdsp in SuSE 9.3 x86_64 despite similar errors about unloadable libaoss libraries (!!!!), but I am not sure how and why.
How did you exactly use the script for which? At starting each application?
Yes, I used the script to start the applications. I labeled the script 'osswrap' (and made it an executable). So, to start firefox, for example, I issued '~/osswrap firefox &'.
What exactly does your osswrap script? Please attach it. Also, alsa package is updated on 10.0 now, so could you check whether it works?
The script named 'osswrap' is the script I posted initially in this thread. As I mentioned above, I copied it from the thread of bug #117989, which was resolved. You participated in that thread (but, apparently, it referred to a 32-bit environment, not 64-bit). The script basically tries to "wrap around" a program, so if that program is ALSA-agnostic and makes OSS calls, those calls will be intercepted and handled by libaoss, which --supposedly-- can do mixing. Per your recommendation, I just updated ALSA on my SuSE 10 x86-64 (from the apt-get repositories because YAST online update showed no updates for ALSA), but the behavior is still the same: flashplayer (called from firefox, the latter invoked by '~/osswrap firefox &', as described above) is muted when, say, I play amarok (the latter 64-bits) and skype tells me that the sound source is not available. So, it seems to me that even the newest ALSA has problems with mixing streams from 32-bit applications, besides the ineffective libaoss. If my sound card had hardware mixing available, I would have no problems probably, but I am running SuSE 10 x86-64 on a 64-bit laptop.
This bug got fixed in the recent release of ALSA.