(That took longer than anticipated since I got side-tracked with an entry for the
Experimental Gameplay Project. Check out my mini-game
Cretan Hubris if you like maze action)
I just released Avoision v1.1 (which should fix the issues identified earlier in this thread):
DEB:
http://sourceforge.net/projects/avsn/fi ... b/downloadSource:
http://sourceforge.net/projects/avsn/fi ... z/downloadFirst off, a huge thanks to qubodup and MCMic for alerting me to the problem (and especially qubodup for sending a core dump and symbol table).
The short version is you'll want to build Avoision/FBG2/Cretan Hubris against Radius Engine 1.1 on Linux. This should fix crashes on SDL v1.2.15 and improve performance on v1.2.14 and below.
For those that are interested, the crash turned out to be caused by two bugs. One was a regression in SDL v1.2.15 (I didn't originally hit the crash because I was testing on v1.2.14). The bug was pretty straight-forward; SDL_SemWaitTimeout returned the wrong error code on timeout. I submitted a patch to fix the bug (and update the unit tests) and the patch has been incorporated into SDL's revision control (
http://bugzilla.libsdl.org/show_bug.cgi?id=1426).
The second bug was that Radius Engine 1.0 did not tolerate failure from SDL_SemWaitTimeout gracefully, leading to a crash. The fix here was just to 1) handle failures in this bit of code gracefully and 2) update the code to not use SDL_SemWaitTimeout. This has a bonus side effect of improving performance on SDL v1.2.14 and below (because on those releases, SDL_SemWaitTimeout is extremely inefficient--so much so that SDL's documentation wiki advises developers avoid the function entirely).
Again, thanks to everyone for their help. Hopefully Avoision 1.1 will live up to its billing as the first "stable" release!