UPDATE: We’re still seeing the crash on Mac. Procedure described does fix the memory leak, though.
UPDATE 2: Crash on Mac is caused by what appears to be a bug in Apple’s code relating to queueing commands for execution on dedicated audio thread, and mutex lock breaking down. Since mutex lock seems to stop working, it’s only natural that a threading-related crash occurs.
When calling alSourceStop(), you might forget to unbind a buffer from the source. Did you unbind it?
alSourcei(this->sourceId, AL_BUFFER, AL_NONE);
If you get a crash on Mac with call stack containing OALSource::Play() and/or ending with OALSource::PrepBufferQueueForPlayback(), this is most probably a good fix. Looks like OpenAL on Mac might have a race condition somewhere unless you do this.
See difference between revision 293 and 294 in libxal, in file audiosystems/OpenAL/OpenAL_Player.cpp.