Multi-threaded entity system fail: collision detection
None of these entities can pass through each other - but because the physics processor and the movement processor are running on different threads, and the physics thread is overloaded, objects are passing through each other.

(The movement processor moves objects who should have been bounced by the physics processor, but physics hasn't got that far by the time the frame ends and the movement processor starts processing again).

I'm including the app for this in the next article, so you can play around with it and see for yourself what happens as the MT stuff conflicts and breaks down.