Laymen let me attempt to explain this to you.
Putting Smart Contract data on a global block chain means that as those contracts interact, it is impossible to prove that the order that the contracts are run is commutative and that the contracts will halt.
I'm not sure where commutativity applies here. Contracts call public methods of
other contracts, so it is an ordered sequence.
Ethereum responded by inventing gas, so that scripts would halt by failing once their gas is exhausted. This is horrific because it means the state machine is put into an indeterminate state.
If there is not enough gas, EVM is supposed to roll back to the pre-execution state.
It is the responsibility of the caller script to take precautionary measures.