[Openal] Segfault on alcCaptureOpenDevice

Garin Hiebert garinh at cheesetoast.net
Wed Sep 27 16:05:55 PDT 2006


> As far as I can tell I’m using valid values in the 
> alcCaptureOpenDevice call. I was originally using alcGetString( 
> /_device, /ALC_DEFAULT_CAPTURE_DEVICE_SPECIFIER) but it was returning 
> NULL, /and/ the documentation I have actually mentions that you should 
> use ALC_DEFAULT_DEVICE_SPECIFIER to get the device name to pass to the 
> function.
>

Using alcGetString(_device, ALC_DEFAULT_CAPTURE_DEVICE_SPECIFIER) was 
correct, and the NULL value is troublesome.

Taking a guess -- Could it be that you have a native NVIDIA audio setup 
on your system (check for nvopenal.dll in your Windows System 
directory). If so, then here's what I think is going on:

- the router (openal32.dll) is noting that the open NVIDIA library 
doesn't have capture functionality, and is returning NULL when you ask 
for the default capture specifier
- when you try to open the device anyways, the NVIDIA library's 
alcCaptureOpenDevice function is being called, but unfortunately that 
library is a 1.0 implementation and doesn't _have_ that call, and a 
crash results...

I've made some big changes in the capture part of the router recently, 
and the library is in testing right now prior to distribution. It could 
be that the changes will prevent this crash and allow you to get the 
functionality you want. The older (current) router had to use the output 
library for capture, which is impossible in the case mentioned above 
where a 1.0-compliant native NVIDIA library is in use. The new router 
can use one library for capture and a separate one for playback (or none 
at all for playback if an AL device isn't opened). I'll send the test 
version to you in a separate email for your own testing -- please don't 
redistribute it yet, since it's still under test.

Garin



More information about the Openal mailing list