scottell's picture

OpenAL issue on OpenSuSe 11.2?

Project:The Open Toolkit library
Version:0.9.9-3
Component:Code
Category:bug report
Priority:normal
Assigned:Unassigned
Status:won't fix
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

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
the Fiddler's picture

#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:

using System.Diagnostics;
 
Debug.Listeners.Clear();
Debug.Listeners.Add(new TextWriterTraceListener("debug.log"));
Debug.Listeners.Add(new ConsoleTraceListener());
scottell's picture

#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

the Fiddler's picture

#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.

the Fiddler's picture

#4

Status:open» won't fix

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
Mailaender's picture

#5

I got a similar issue on openSUSE 12.1 with OpenAL 1.14 and 1.13

Exception of type `System.DllNotFoundException`: OpenAL32.dll
TypeName=``
  at (wrapper managed-to-native) Tao.OpenAl.Alc:alcOpenDevice (string)

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.