FuelLabs/fuel-core · error
estimated predicates count overflow
Error message
estimated predicates count overflow
What it means
estimated_predicates_count is incremented with checked_add after each predicate estimation round; the error fires only if the counter (a usize) overflows, i.e. after 2^64 estimation rounds on the same assembly. It is a defensive guard, not a condition a real workload can reach (the estimate_predicates_limit check trips far earlier).
Source
Thrown at crates/fuel-core/src/schema/tx/assemble_tx.rs:700
let mut tx_to_estimate = self.tx;
let estimated_tx = tokio_rayon::spawn_fifo(move || {
let result = tx_to_estimate.estimate_predicates(
¶meters,
memory,
read_view.as_ref(),
);
result.map(|_| tx_to_estimate)
})
.await
.map_err(|err| anyhow::anyhow!("{:?}", err))?;
self.tx = estimated_tx;
self.estimated_predicates_count = self
.estimated_predicates_count
.checked_add(1)
.ok_or_else(|| anyhow::anyhow!("estimated predicates count overflow"))?;
Ok(self)
}
async fn estimate_script_if_possible(&mut self) -> anyhow::Result<()> {
if !self.is_runnable_script() {
return Ok(())
}
let Some(script_ref) = self.tx.as_script_mut() else {
unreachable!("The transaction is a script, checked above; qed");
};
// Trick to avoid cloning `Script`
let dummy_script = Transaction::script(
Default::default(),
Default::default(),
Default::default(),View on GitHub (pinned to b9d4d170da)
Solutions
- Treat this as an internal invariant failure: report it upstream with the tx and node version
- If you forked the node and disabled the round limit, restore a sane assemble_tx_estimate_predicates_limit
Defensive patterns
Strategy: try-catch
Try / catch
catch (e) { if (/estimated predicates count overflow/.test(e.message)) { /* internal invariant: report upstream with tx + node version */ } else throw e; } Prevention
- Nothing client-side — the estimate_predicates_limit check bounds this counter
- Fork maintainers: keep a finite assemble_tx_estimate_predicates_limit
When it happens
Trigger: Theoretically usize::MAX estimation rounds within one assemble call; in practice unreachable because error 88's limit check fires first at the configured round limit.
Common situations: Custom forks that remove or raise estimate_predicates_limit to extreme values; otherwise never observed in the wild.
Related errors
- dry run count overflow
- The transaction estimation requires running of predicate mor
- The total base asset amount used by the transaction is too b
- The total base asset amount became too big when tried to cov
- During script gas limit estimation, dry-run returned incorre
AI-assisted analysis of FuelLabs/fuel-core@b9d4d170da (2026-08-16).
Data as JSON: /api/errors/9da7f5052bc97fd1.
Report an issue: GitHub.