Q:

What might cause IDirectDrawSurface::Release blocks and never return? 

DirectDraw 7 is very old APIs but we have a lot legacy code written on that. 
Recently I found that directdraw might block on some of it's interface calls, like IDirectDrawSurface::Release, and never never return.   But some times they don't. 
I can not find any information by Google so I came here. 
Hope you can help me or tell me where I can find help. 
Thanks a lot. 

A:

A deadlock would imply that you are multi-threading DirectDraw?   This isn't a safe plan.   You should avoid doing it. 
Apologies if this isn't the cause.