
OpenAL issue on OpenSuSe 11.2?
Posted Tuesday, 24 November, 2009 - 17:15 by scottell| Project: | The Open Toolkit library |
| Version: | 0.9.9-3 |
| Component: | Code |
| Category: | bug report |
| Priority: | normal |
| Assigned: | Unassigned |
| Status: | won't fix |
Jump to:
Description
I've hit a DllNotFoundException when I try to create a AudioContext.
Details:
Mono-INFO: DllImport attempting to load: 'libopenal.so.1'. Mono-INFO: DllImport loading location: 'libopenal.so.1.so'. Mono-INFO: DllImport error loading library: 'libopenal.so.1.so: cannot open shared object file: No such file or directory'. Mono-INFO: DllImport loading library: './libopenal.so.1.so'. Mono-INFO: DllImport error loading library './libopenal.so.1.so: cannot open shared object file: No such file or directory'. Mono-INFO: DllImport loading: 'libopenal.so.1'. Mono-INFO: Searching for 'alcOpenDevice'. Mono-INFO: DllImport attempting to load: 'libopenal.so.1'. Mono-INFO: DllImport loading location: 'libopenal.so.1.so'. Mono-INFO: DllImport error loading library: 'libopenal.so.1.so: cannot open shared object file: No such file or directory'. Mono-INFO: DllImport loading library: './libopenal.so.1.so'. Mono-INFO: DllImport error loading library './libopenal.so.1.so: cannot open shared object file: No such file or directory'. Mono-INFO: DllImport loading: 'libopenal.so.1'. Mono-INFO: Searching for 'alcMakeContextCurrent'. Mono-INFO: DllImport attempting to load: 'libopenal.so.1'. Mono-INFO: DllImport loading location: 'libopenal.so.1.so'. Mono-INFO: DllImport error loading library: 'libopenal.so.1.so: cannot open shared object file: No such file or directory'. Mono-INFO: DllImport loading library: './libopenal.so.1.so'. Mono-INFO: DllImport error loading library './libopenal.so.1.so: cannot open shared object file: No such file or directory'. Mono-INFO: DllImport loading: 'libopenal.so.1'. Mono-INFO: Searching for 'alcGetError'. Mono-INFO: DllImport attempting to load: 'libopenal.so.1'. Mono-INFO: DllImport loading location: 'libopenal.so.1.so'. Mono-INFO: DllImport error loading library: 'libopenal.so.1.so: cannot open shared object file: No such file or directory'. Mono-INFO: DllImport loading library: './libopenal.so.1.so'. Mono-INFO: DllImport error loading library './libopenal.so.1.so: cannot open shared object file: No such file or directory'. Mono-INFO: DllImport loading: 'libopenal.so.1'. Mono-INFO: Searching for 'alcGetString'. Mono-INFO: DllImport attempting to load: 'libopenal.so.1'. Mono-INFO: DllImport loading location: 'libopenal.so.1.so'. Mono-INFO: DllImport error loading library: 'libopenal.so.1.so: cannot open shared object file: No such file or directory'. Mono-INFO: DllImport loading library: './libopenal.so.1.so'. Mono-INFO: DllImport error loading library './libopenal.so.1.so: cannot open shared object file: No such file or directory'. Mono-INFO: DllImport loading: 'libopenal.so.1'. Mono-INFO: Searching for 'alcIsExtensionPresent'. Mono-INFO: DllImport attempting to load: 'libopenal.so.1'. Mono-INFO: DllImport loading location: 'libopenal.so.1.so'. Mono-INFO: DllImport error loading library: 'libopenal.so.1.so: cannot open shared object file: No such file or directory'. Mono-INFO: DllImport loading library: './libopenal.so.1.so'. Mono-INFO: DllImport error loading library './libopenal.so.1.so: cannot open shared object file: No such file or directory'. Mono-INFO: DllImport loading: 'libopenal.so.1'. Mono-INFO: Searching for 'alcDestroyContext'. Mono-INFO: DllImport attempting to load: 'libopenal.so.1'. Mono-INFO: DllImport loading location: 'libopenal.so.1.so'. Mono-INFO: DllImport error loading library: 'libopenal.so.1.so: cannot open shared object file: No such file or directory'. Mono-INFO: DllImport loading library: './libopenal.so.1.so'. Mono-INFO: DllImport error loading library './libopenal.so.1.so: cannot open shared object file: No such file or directory'. Mono-INFO: DllImport loading: 'libopenal.so.1'. Mono-INFO: Searching for 'alcCloseDevice'. Mono-INFO: DllImport attempting to load: 'libopenal.so.1'. Mono-INFO: DllImport loading location: 'libopenal.so.1.so'. Mono-INFO: DllImport error loading library: 'libopenal.so.1.so: cannot open shared object file: No such file or directory'. Mono-INFO: DllImport loading library: './libopenal.so.1.so'. Mono-INFO: DllImport error loading library './libopenal.so.1.so: cannot open shared object file: No such file or directory'. Mono-INFO: DllImport loading: 'libopenal.so.1'. Mono-INFO: Searching for 'alcCreateContext'. Unhandled Exception: System.DllNotFoundException: openal32.dll at OpenTK.Audio.AudioContext.CreateContext (System.String device, Int32 freq, Int32 refresh, Boolean sync, Boolean enableEfx, MaxAuxiliarySends efxAuxiliarySends) [0x00000] at OpenTK.Audio.AudioContext..ctor (System.String device, Int32 freq, Int32 refresh, Boolean sync, Boolean enableEfx, MaxAuxiliarySends efxMaxAuxSends) [0x00000] at OpenTK.Audio.AudioContext..ctor () [0x00000] at OpentTKTest.MainClass.Main (System.String[] args) [0x00000]
openal is installed:
scottell@Byzantine:~/Projects/OpentTKTest/OpentTKTest/bin/Debug> openal-info AL lib: pulseaudio.c:255: new tlength (16308) is not a multiple of minreq (4096)! Available playback devices: PulseAudio Software ALSA Software on default ALSA Software on HDA Intel [STAC92xx Analog] (hw:0,0) ALSA Software on HDA Intel [STAC92xx Digital] (hw:0,1) OSS Software Available capture devices: PulseAudio Capture ALSA Capture on default ALSA Capture on HDA Intel [STAC92xx Analog] (hw:0,0) OSS Capture Default device: PulseAudio Software Default capture device: PulseAudio Capture ALC version: 1.1 ALC extensions: ALC_ENUMERATE_ALL_EXT, ALC_ENUMERATION_EXT, ALC_EXT_CAPTURE, ALC_EXT_disconnect, ALC_EXT_EFX, ALC_EXTX_thread_local_context OpenAL vendor string: OpenAL Community OpenAL renderer string: OpenAL Soft OpenAL version string: 1.1 ALSOFT 1.9.563 OpenAL extensions: AL_EXTX_buffer_sub_data, AL_EXT_EXPONENT_DISTANCE, AL_EXT_FLOAT32, AL_EXT_IMA4, AL_EXT_LINEAR_DISTANCE, AL_EXT_MCFORMATS, AL_EXT_OFFSET, AL_EXTX_sample_buffer_object, AL_EXTX_source_distance_model, AL_LOKI_quadriphonic EFX version: 1.0 Max auxiliary sends: 2 Available filters: Low-pass Available effects: EAX Reverb Reverb Echo # ldconfig -p |grep openal libopenal.so.1 (libc6) => /usr/lib/libopenal.so.1 libopenal.so.0 (libc6) => /usr/lib/libopenal.so.0 libopenal.so (libc6) => /usr/lib/libopenal.so


Comments
#1
Thanks for the bug report. Can you please test your application with the debug version of OpenTK.dll and post the output here?
You can use the following snippet to direct the debug output to a file:
#2
Enumerating audio devices.
OpenTK.Audio.AudioContextException: Failed to create dummy Context. Device (-1243426808) Context (-1074077368) MakeContextCurrent failed, Alc Error (InvalidContext) Invalid Context
at OpenTK.Audio.AudioDeviceEnumerator..cctor () [0x00000]
Unhandled Exception: System.DllNotFoundException: openal32.dll
at OpenTK.Audio.AudioContext.CreateContext (System.String device, Int32 freq, Int32 refresh, Boolean sync, Boolean enableEfx, MaxAuxiliarySends efxAuxiliarySends) [0x00000]
at OpenTK.Audio.AudioContext..ctor (System.String device, Int32 freq, Int32 refresh, Boolean sync, Boolean enableEfx, MaxAuxiliarySends efxMaxAuxSends) [0x00000]
at OpenTK.Audio.AudioContext..ctor () [0x00000]
at OpentTKTest.MainClass.Main (System.String[] args) [0x0002f] in /home/scottell/Projects/OpentTKTest/OpentTKTest/Main.cs:20
#3
Thanks. Judging from the log and from some recent discussions on the openal mailing list, this might actually be an OpenAL Soft issue that was fixed in the 1.10.662 release. It would really help if you could confirm whether the error shows up in this version.
(Compiling openal-soft is relatively easy: you need cmake and the pulseaudio dev packages. Do not install the generated .so, but rather copy it to your application directory and modify OpenTK.dll.config to map "openal32.dll" to "./libopenal.so.1" (note the "./")).
I am installing a new openSUSE 11.2 virtual machine for testing but this is going to take some time.
Edit: check the openal-soft homepage for build instructions.
#4
This is a known bug in the pulseaudio backend of OpenAL Soft 1.9. Sadly, there is nothing OpenTK can do about this.
The solution is to have openSUSE upgrade to OpenAL Soft 1.10. Till then, you can work around the issue by disabling the pulseaudio driver: create a file named ~/.alsoftrc in your home directory and add the following lines:
# Prefer alsa backend to avoid buggy pulse driver on OpenAL Soft 1.9 drivers = alsa,oss,solaris,dsound,winmm,port,pulse,wave#5
I got a similar issue on openSUSE 12.1 with OpenAL 1.14 and 1.13
This was a case-sensitive error:
<dllmap os="linux" dll="openal32.dll" target="libopenal.so.1"/>to
<dllmap os="linux" dll="OpenAL32.dll" target="libopenal.so.1"/>in OpenTK.dll.config solved it.