Since switching from OpenAL to FMOD a number of users of my game have been reporting lower frame rate (increased CPU usage) and/or crashes. I’m not able to reproduce these on my machine so I resorted to profiling and memory leak checking to see if I could find anything. Both the profiler and memory leak checker are saying that there’s a problem with FMOD_MyEars_GetError. This is despite the fact that I am not using MyEars. See below:
[code:220kj8hc]Error #1: UNINITIALIZED READ: reading 0x0389c02c-0x0389c030 4 byte(s)
0 KERNEL32.dll!GetConsoleMode +0x5a (0x76521382 <KERNEL32.dll+0x11382>)
1 fmodex.dll!FMOD_MyEars_GetError +0x160c7 (0x61cf39b8 <fmodex.dll+0x939b8>)
2 fmodex.dll!FMOD_MyEars_GetError +0x16152 (0x61cf3a43 <fmodex.dll+0x93a43>)
3 fmodex.dll!FMOD_MyEars_GetError +0xcb3e (0x61cea42f <fmodex.dll+0x8a42f>)
4 fmodex.dll!FMOD_File_GetDiskBusy +0x573d (0x61cdc45e <fmodex.dll+0x7c45e>)
5 fmodex.dll!FMOD_MyEars_GetError +0x13ef4 (0x61cf17e5 <fmodex.dll+0x917e5>)
6 fmodex.dll!FMOD_MyEars_GetError +0x14531 (0x61cf1e22 <fmodex.dll+0x91e22>)
7 fmodex.dll!FMOD::SystemI::createSoundInternal +0x3e3a (0x61d2912b <fmodex.dll+0xc912b>)
8 fmodex.dll!FMOD::System::init +0x2a (0x61cd5f5b <fmodex.dll+0x75f5b>)
9 fmodex.dll!FMOD_System_Init +0x45 (0x61cf5616 <fmodex.dll+0x95616>)
10 StartFMOD [c:\users\ryan clark\desktop\necrodancer\necrodancer.build\glfw\main.cpp:3694]
11 bb_necrodancergame_NecroDancerGame::m_OnCreate [c:\users\ryan clark\desktop\necrodancer\necrodancer.build\glfw\main.cpp:9972]
Note: @0:00:26.263 in thread 9760
Note: instruction: lock cmpxchg %edx (%ecx) %eax -> (%ecx) %eax[/code:220kj8hc]
The profiler is saying that a lot of time is being spent in FMOD_MyEars_GetError and FMOD_File_GetDiskBusy. I am initializing FMOD the way it is shown in the tutorials (and I have been using FMOD for years). Initializing with FMOD_INIT_DISABLE_MYEARS_AUTODETECT has no effect. Explicitly setting speaker mode to FMOD_SPEAKERMODE_STEREO has no effect. I even tried downgrading to an older FMOD version before MyEars was integrated. This got rid of the calls to FMOD_MyEars_GetError, but the repeated calls to FMOD_File_GetDiskBusy persist.
Any idea what could be causing this? Even if all I do is…
[code:220kj8hc]FMOD_SYSTEM *systemFMOD = NULL;
FMOD_System_Init(systemFMOD, 100, FMOD_INIT_NORMAL, 0);[/code:220kj8hc]
…and make no further FMOD calls, I see these MyEars/GetDiskBusy issues.
Thanks for any insights you may have!
- Ryan Clark asked 3 years ago
Please login first to submit.