The order of the calls is important. Especially releasing the mutex before waking the wait condition - if other things happen in the mean time you could end up in trouble.
The difference in release and debug mode could just be a sign that you've got a race condition. QMutex's behavior is the same in debug and release mode.
Could you post some sample code?
Bookmarks