function afterLiquidationExecution() external {
if (msg.sender != address(gmxProxy)) {
revert Error.InvalidCall();
}
}
When a liquidation occurs, the afterLiquidationExecution
function is called.This sets depositPaused = true
, blocking new deposits.
The deposit
function checks depositPaused
.
After liquidation, this check will always fail, preventing new deposits.
The contract never resets depositPaused
to false
in:
Liquidation handling (afterLiquidationExecution
/runNextAction
)
Position closure (_finalize
)
Withdrawal flows
The only way to unpause is via an explicit owner call.
If the owner forgets to call this, deposits remain paused forever.
Example:
afterLiquidationExecution
sets depositPaused = true
.
Keeper calls runNextAction
to finalize, but depositPaused
stays true
.
Transaction reverts due to depositPaused == true
Requires manual setDepositPaused(false)
to fix
Deposits stay paused indefinitely after liquidation until owner steps in.
Foundry
Add logic to automatically unpause deposits after liquidation handling.
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.