I'm working on an iOS game where we create an OpenAL context on startup which exists for the life of the application. We allocate a pool of OpenAL sources. Each time a map is loaded the sound effects (.wav) are loaded into OpenAL buffers, and then we look for available sources when playing them. The only things that are loaded/unloaded are the buffers themselves.
After running for awhile some sounds just stop working when calling alPlaySource(). A call to alGetError() returns -1? Prior to the alPlaySource() call alGetError() returns 0.