Closed aaronmboyd closed 3 days ago
Possibly related to #1982
Maybe we should not silently discard the error in https://github.com/celo-org/celo-blockchain/blob/85c175776055fc739fb179d9426d7b158e0c3644/miner/block.go#L386
From reading the stack trace, I see only one way to cause the error and that is
curr
of nil
in toCeloFn
GetExchangeRate
failed to deliver an exchange rate for the given currencyNewExchangeRate
gets called with either numerator or denominator being zeroHowever, I don't see this being the case for any of the fee currencies around that time:
for curr in 0x765DE816845861e75A25fCA122bb6898B8B1282a 0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73 0xe8537a3d056DA446677B9E9d6c5dB704EaAb4787
cast call -r https://celo-mainnet.infura.io/v3/$INFURA_API_KEY 0xefB849352
39dAcdecF7c5bA76d8dE40b077B7b33 'function medianRate(address token) external view returns (uint256, uint256)' $curr -b 18831000
end
713715994804191731790000
1000000000000000000000000
653368356238021788240000
1000000000000000000000000
3553065332252728052300000
1000000000000000000000000
Have I missed anything?
I was unable to reproduce the panic with v1.7.4, but I just ran it locally and didn't use the docker container as described in the issue.
We could easily handle the case and avoid a panic (e.g. by not processing a tx when we can't convert the miner fee to CELO). But since it does not happen for all validators, we would get a consensus failure instead of a panic, which would be even harder to debug.
Alternatively, we could keep panicking and add some additional debugging output to show the specific tx that fails when it happens the next time.
Closing stale, and I believe this was resolved, although I don't think it was specifically reproducable on ARM.
Expected Behavior
Sync from genesis without panic
Actual Behavior
Panic and geth terminated. Resumes syncing normally after restart.
Steps to reproduce the behavior
Build celo-blockchain from source tag
v1.7.4
Go:go1.19.2.linux-arm64, dependency in custom Dockfile
Docker:24.0.2
Running on:Ubuntu 22.04.2 LTS ARM64
Dockerfile:
Backtrace
Chain/Network:
Mainnet