I’m trying to port Hurrican ( http://www.hurrican-game.de/ ) to MacOS. The original code was written for an older version of fmod, so I upgraded it to fmod ex at the same time. This is my first application using fmod.
Everything works fine on my ancient PowerPC Mac Mini, but on my slightly less ancient Intel MacBook I get massive stalls while the .IT files are loaded. They’re loaded as streams and not samples, so it shouldn’t be decompressing them. The problem is sometimes only a pause, sometimes it hangs completely. And it seems to be worse if I launch the game from outside xcode.
If I break into the program it seems to be waiting for a semaphore inside the kernel while creating the sound, though I guess that could just mean that the application is not active when I stop it.
Another problem are slight stalls when sound effects are triggered on the MacBook that don’t appear on the Mac Mini either.
The game is a relatively classic single-threaded design without asynchronous loading, so I can’t imagine something else stealing all the CPU.
BTW: It is a universal build, so it is not going through the translation layer, and top shows a cpu load ~13%.

  • You must to post comments

This is after a few tries where I only got short stalls, this time it hangs and all music stops. If I break into the debugger I get:

0 0x926e01ae in semaphore_wait_signal_trap

1 0x926e7c85 in pthread_mutex_lock

2 0x002a39de in dyld_stub_write

3 0x0032105d in FMOD::SystemI::getMemoryUsedImpl

4 0x0030f47d in FMOD::GeometryI::getMemoryInfo

5 0x002c25ac in FMOD::ChannelI::validate

6 0x002c2bc8 in FMOD::ChannelI::validate

7 0x002c2e38 in FMOD::ChannelI::validate

8 0x002e74e7 in FMOD::ChannelI::validate

9 0x0031c8db in FMOD::SoundI::getUserDataInternal

10 0x0031db5c in FMOD::SoundI::getUserDataInternal

11 0x00318e09 in FMOD::GeometryI::getMemoryInfo

12 0x00319068 in FMOD::GeometryI::getMemoryInfo

13 0x00328f77 in FMOD::SystemI::createSoundInternal

14 0x0032a6ee in FMOD::SystemI::createSoundInternal

15 0x0031ed5d in FMOD::System::createSound

16 0x0002c372 in CSoundManager::LoadSong at DX8Sound.cpp:634

17 0x00072118 in GameInit2 at Main.cpp:1058

18 0x00072c80 in Heartbeat at Main.cpp:1255

19 0x000734b9 in SDL_main at Main.cpp:587

20 0x00002ed6 in -[SDLMain applicationDidFinishLaunching:] at SDLMain.mm:293

Still on an Intel MacBook, MacOS 10.5.

Did anyone else see this? Are there any known incompatibilities between SDL and FMod?

  • You must to post comments

have you tried adding the FMOD_NONBLOCKING flag to the createStream call. It still has to parse the header and load the pattern data before it is ready to play.

  • You must to post comments

It already plays an IT file while further IT files are opened. Since then I tried a few different audio libraries, and all of them seem to stumble a bit during loading (though none of them actually deadlocked). I think the core problem is that the game is single-threaded and not running the update loop while loading a file.

  • You must to post comments
Showing 3 results
Your Answer

Please first to submit.