EnableOpenALAudio - Crash?

BlitzMax Forums/BlitzMax Programming/EnableOpenALAudio - Crash?

therevills(Posted 2016) [#1]
Hi All,

One of my users is experiencing a crash and I've got it traced to EnableOpenALAudio...

Here is the code:

		?Win32	
		OSVersion = ccGetVersionString()
		DebugLog "Init OSVersion = " + OSVersion
		If OsVersion <> "Windows XP" Then
			SoundDriver = "OpenAL Generic Software"
			ChangeSoundDriver(SoundDriver, 0)
		EndIf
		?


	Method ChangeSoundDriver(d$, SaveIniChangedFile%=1)
		DebugLog "ChangeSoundDriver d = " + d
		
		'If OpenAL is passed in as the start of the string, then enable it.
		If Mid(d,1,6) = "OpenAL" Then
			EnableOpenALAudio()
		EndIf
		DebugLog "ChangeSoundDriver Setting AudioDriver..."
		If SetAudioDriver(d) Then
			SoundDriver = d$
		Else
			SoundDriver = "None"
		EndIf
	End Method


And the debug trace statements:

03:15:03: Init OSVersion = Windows 7
03:15:03: ChangeSoundDriver d = OpenAL Generic Software


As you can see we get the OSVersion trace within the Init method and the ChangeSoundDriver trace... but not the ChangeSoundDriver Setting AudioDriver...

The game has the OpenAl DLLs in the exe folder (OpenAL32.dll and wrap_oal.dll) and it works for lots of PCs.

The user's PC specs are:
Win 7 Ult SP 1 6.1.7601 64-bit
AMD FX 6300

Problem signature:
Problem Event Name:	APPCRASH
Application Name:	LoSCotD.exe
Application Version:	0.0.0.0
Application Timestamp:	56ad7e83
Fault Module Name:	ntdll.dll
Fault Module Version:	6.1.7601.18247
Fault Module Timestamp:	521ea8e7
Exception Code:	c0000005
Exception Offset:	00033d0b
OS Version:	6.1.7601.2.1.0.256.1
Locale ID:	1033
Additional Information 1:	5f37
Additional Information 2:	5f37a320dbefe823b9e66dbee9daae0c
Additional Information 3:	4c98
Additional Information 4:	4c986887bed4872951144b2d22538602


Any ideas?

Cheers,
Steve


Chalky(Posted 2016) [#2]
Does it work on other 64 bit systems?

Have you tried copying openal32.dll to C:\Windows\SysWOW64\ on the system which crashes?


xlsior(Posted 2016) [#3]
Doesn't the dll actually need to be registered instead of just present in the folder?

regsvr32.exe openal32.dll


Midimaster(Posted 2016) [#4]
I dont' know whether this will help:

You do not check, if OpenAl really works... I think too, that it has to be installed by the original installer, which will register it too. This is the way I check OpenAl at user's computer:

First check, whether OpenAl really works. If not, copy the "OalInst.Exe" to temp folder, then run the installation. This also will update invalid or out-of-date versions on the user's computer.

If OpenALInstalled()=False 
   OpenAlTreiber
EndIf
EnableOpenALAudio()

SetAudioDriver("OpenAL")


Function OpenAlTreiber()
		OpenPDF "OpenALManual.pdf"	
		CopyFile DatenPfad + "oalinst.exe",GetTempFolder() + "\oalinst.exe"
		Notify ("openal driver is missing")
		system_ GetTempFolder() + "\oalinst.exe"
		Notify ("Restart the game")
		End
End Function