# Beaming job might freeze on dest chain under some conditions, leading to owner losing (temporarily) access to token

HolographOperator's executeJob reverts when tx.gasprice exceeds the user-set gasPrice, so a gas spike plus a non-completing selected operator freezes the bridge job and locks the token.

- Payout: Contest reward
- Severity: medium
- Program: Holograph
- Credited: 0xA5DF
- Disclosed: 2022-12-15
- Write-up quality: 6/10
- Original: https://github.com/code-423n4/2022-10-holograph-findings/issues/170
- Library page: https://bugbountylibrary.com/r/c4%3A2022-10-holograph%3AM-03
- Tags: domain:web3 impact:dos kind:contest platform:code4rena sev:medium tech:solidity technique:source-review vuln:business-logic vuln:dos

**Target:** HolographOperator.executeJob on destination chain
**Root cause:** executeJob requires gasPrice >= tx.gasprice and only the selected operator may execute; if that operator never completes the job and gas price stays above the user's limit, every execution attempt reverts, so the job never reaches a failed state and no refund/force-fail path triggers.
**Steps:**
1. User bridges out with a gasPrice limit in the request.
2. Selected operator fails to complete the job (intentional or hardware loss).
3. Gas price spikes above the user's gasPrice limit.
4. Any call to `executeJob()` reverts on `require(gasPrice >= tx.gasprice)`, including attempts by other operators or the owner.
5. Job stays pending until gas price falls back below the limit; token owner temporarily loses access to the token.
**How found:** Read the operator selection/execution logic and the sponsor's own test 'Should fail if there has been a gas spike', noticing the require on tx.gasprice reverts the whole function rather than routing to a catch/fail path, so the documented refund mechanism never activates.
**Exploitation:** Not an active attack; a griefing/liveness scenario where a malicious selected operator sacrifices its bond and waits for a gas spike so the job cannot be executed by anyone, denying the owner access to the bridged token until gas drops.
**Insight:** When a contract gates execution on `tx.gasprice` with a hard require, check whether the revert prevents the job from ever being marked failed—if so, any liveness/refund/expiry mechanism downstream is unreachable and a single non-cooperating party plus a gas spike becomes a DoS.
