This is caused by a critical section deadlock.
Here's what causes it:
Thread A is waiting for a resource locked by thread B.
Thread B is waiting for a resource locked by thread A.
It's something I've been trying to fix with the AI this week. It's actually quite tough because the particular deadlock is related to what seems like a simple call World::GetRandomEmptyTile().
The EmptyTile is the issue. Because to determine whether it's "empty" requires going and looking at a lot of stuff.
I wrote a much simpler version of the function that I hope won't have the problem. But like I said, it's proving a lot tougher than I thought it would to fix.