If a function requires more gas than the block gas limit to complete its execution, it will inevitably fail. These vulnerabilities typically occur in loops that iterate over dynamic data structures.
Functions vulnerable to gas limits can become uncallable, locking funds or freezing contract state.
A token smart contract that implements a function to transfer all tokens of an array of addresses could exceed the block gas limit if the array is too large.