ok, I got it figured. The audio context is not set before it's closed, making the openal thread hang in space forever once alcDestroyContext is called. The code that fixes this problem is as follows:
trunk/source/shared_lib/sources/sound/openal/sound_player_openal.cpp: line 289
it should really say:
alcMakeContextCurrent(context); //change to the lost context
alcDestroyContext(context); //close the context, ending the audio thread.

This will fix the problem, I tested it.