Hello!
One of games rarely crashed with segv in line 86 of dsound/buffer.c:
85: IDirectSoundBuffer_Release((LPDIRECTSOUNDBUFFER)This-dsb);
86: This-dsb-notify = NULL;
(sorry, I failed to save actual backtrace at the time). This looks
like typical assign-after-free bug. I've applied attached patch
(wine-1.1.7, now on 1.1.19), no crashes so far (btw, similar
*Secodary*Release method down in code uses proper order -
assign-NULL-then-release).
--- wine-1.1.7/dlls/dsound/buffer.c.orig 2009-03-14 15:28:10.0 +0300
+++ wine-1.1.7/dlls/dsound/buffer.c 2009-04-23 19:50:42.0 +0400
@@ -82,8 +82,8 @@ static ULONG WINAPI IDirectSoundNotifyImpl_Release(
TRACE((%p) ref was %d\n, This, ref + 1);
if (!ref) {
-IDirectSoundBuffer_Release((LPDIRECTSOUNDBUFFER)This-dsb);
This-dsb-notify = NULL;
+IDirectSoundBuffer_Release((LPDIRECTSOUNDBUFFER)This-dsb);
HeapFree(GetProcessHeap(), 0, This);
TRACE((%p) released\n, This);
}