Hi,
I wrote the list several months back about some mysterious crashes that were occurring in my Doom port, “The Eternity Engine”, as well as in several other such ports (PrBoom, PrBoom+, WinMBF, Chocolate Doom). Working together, we discovered that the common variables between all users experiencing the crash were that all of them have dual-core CPUs or multiple-processor machines and are running under Windows XP.
It seems that a lock being held on the audio buffer is either valid only for a certain thread, or is being released in a way that is dependent upon the timing of the calls in question. Either way, when running on a different core, SDL_mixer will intermittently pass to the postmix callback a buffer which becomes invalid partway during the run of the callback function. Where and when this happens are highly inconsistent, demonstrating beyond any doubt that this is some type of race condition. When it happens, Windows throws a very hard-to-trace/debug access error.
In the Doom community we have had to work around this issue by using the Win32 API function SetProcessorAffinity. This is not ideal, of course, as it precludes our dual core users from getting any benefit even if the program in question is otherwise capable of making use of multiple hardware threads.
I haven’t seen this issue raised here on the mailing list, and I can’t find anything that looks definitively like it on the SDL bug tracker. So I’m bringing it up again myself to see if anything has been done about it yet, or will be done about it, before we make a decision on whether or not to keep using SDL_mixer.
James Haley
Lead Programmer, Team Eternity
http://doomworld.com/eternity/_________________________________________________________________
Make every e-mail and IM count. Join the i?m Initiative from Microsoft.
http://im.live.com/Messenger/IM/Join/Default.aspx?source=EML_WL_ MakeCount
hey,
Definitely mark a bug in the bug tracker 
Sounds like you have made a good start.
Have you tried using the other windows audio driver?
cu,
Hi,
I wrote the list several months back about some mysterious crashes that were
occurring in my Doom port, “The Eternity Engine”, as well as in several
other such ports (PrBoom, PrBoom+, WinMBF, Chocolate Doom). Working
together, we discovered that the common variables between all users
experiencing the crash were that all of them have dual-core CPUs or
multiple-processor machines and are running under Windows XP.
It seems that a lock being held on the audio buffer is either valid only for
a certain thread, or is being released in a way that is dependent upon the
timing of the calls in question. Either way, when running on a different
core, SDL_mixer will intermittently pass to the postmix callback a buffer
which becomes invalid partway during the run of the callback function. Where
and when this happens are highly inconsistent, demonstrating beyond any
doubt that this is some type of race condition. When it happens, Windows
throws a very hard-to-trace/debug access error.
In the Doom community we have had to work around this issue by using the
Win32 API function SetProcessorAffinity. This is not ideal, of course, as it
precludes our dual core users from getting any benefit even if the program
in question is otherwise capable of making use of multiple hardware threads.
I haven’t seen this issue raised here on the mailing list, and I can’t find
anything that looks definitively like it on the SDL bug tracker. So I’m
bringing it up again myself to see if anything has been done about it yet,
or will be done about it, before we make a decision on whether or not to
keep using SDL_mixer.
James Haley
Lead Programmer, Team Eternity
http://doomworld.com/eternity/
[snip spam]On Wed, May 21, 2008 at 5:56 AM, James Haley wrote:
SDL mailing list
SDL at lists.libsdl.org
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org
I haven’t seen this issue raised here on the mailing list, and I can’t find anything that looks definitively like it on the SDL bug tracker. So I’m bringing it up again myself to see if anything has been done about it yet, or will be done about it, before we make a decision on whether or not to keep using SDL_mixer.
Yes, please report it at http://bugzilla.libsdl.org/ and include any stack
trace info you have.
Thanks!
-Sam Lantinga, Lead Software Engineer, Blizzard Entertainment