The try/catch blocks are used inside several the functions (LibWillMinting::initializeOracle, LibChainlinkOracle::getPrice, LibUniswapOracle::consult, LibWell::getTwaReservesFromBeanstalkPump) without ensuring sufficient gas for the operations within the try block. try/catch blocks are used to handle exceptions without halting the entire transaction. If the gas supplied to these operations is insufficient, the call within the try block may revert, leading the catch block to execute. This situation can cause unexpected behaviors.
When a smart contract uses a try/catch block to handle exceptions or to attempt operations that may fail, it's important to consider the gas implications. A try/catch block allows a contract to attempt an operation (in the try block) and to catch failures (in the catch block) without causing the entire transaction to revert. However, if the gas provided to the try block operation is insufficient, the operation can fail due to an "out of gas" error. This failure mode isn't what the devs intended when catching exceptions (the intention was to catch and handle specific contract-related errors rather than generic execution issues like out of gas). This unforeseen situation can cause unexpected behaviors.
Manual review.
Ensure sufficient gas is supplied when using the try/catch block.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.