Why is everything static? That's surely a bad idea. In general, don't make things global/static, it will only cause trouble and is not necessary if you design the code well. It's well possible that the error is related to this (e.g. the sound is destroyed after OpenAL is cleaned up). Just give objects a clear ownership and lifetime, and don't use a single static or global variable.
And why don't you use a dynamic data structure, such as std::queue, to store the sounds? A fixed size array is an unnecessary limitation (and even then, you should prefer std::array).
By the way, the code tags you had initially (the C++ ones) were better. Please edit back...