A reference application I use fails with a segfault in d3d, Its called Little Fighter 2
It fails after a call to BLT where both the source and dest are NULL and delivers this trace. I suspect the memcpy at line 1251 in surface_gdi.c then fails because sbuf or dbuf are invalid or NULL. I'm not very familiar with this code so I'd welcome views on the correct fix, (Other than just checking dbuf and sbuf for NULL)
trace:ddraw:IDirectDrawSurfaceImpl_Blt (7ff33bd8)->(0,0,0,1000400,7fd2fb20) trace:d3d_surface:IWineGDISurfaceImpl_Blt (7ff33cb8)->(0,0,0,1000400,7fd2fb20) trace:d3d_surface:IWineGDISurfaceImpl_LockRect (7ff33cb8) : rect@0 flags(00000000), output lockedRect@7fd2fa28, memory@7d6c0000 trace:d3d_surface:IWineD3DSurfaceImpl_GetPitch (7ff33cb8) trace:d3d_surface:IWineD3DSurfaceImpl_GetPitch (7ff33cb8) Returning 2384 trace:d3d_surface:IWineGDISurfaceImpl_LockRect Locked Rect (7ff33d20) = l 0, t 0, r 794, b 550 trace:d3d_surface:IWineGDISurfaceImpl_LockRect returning memory@7d6c0000, pitch(2384)