status-im / nimbus-eth2

Nim implementation of the Ethereum Beacon Chain
https://nimbus.guide
Other
530 stars 231 forks source link

Unhandled exception on db.getState returning None #707

Closed kdeme closed 4 years ago

kdeme commented 4 years ago
DBG 2020-01-29 14:08:15+01:00 Attestation received                       topics="beacnde" tid=101820 attestation="(aggregation_bits: 0b1000, data: (slot: 336, index: 2, beacon_block_root: \"ce92168d\", source_epoch: 41, source_root: \"144cdc12\", target_epoch: 42, target_root: \"ce92168d\"), signature: \"b10e358c\")" cat=consensus headRoot=ce92168d headSlot=335 pcs=on_attestation wallSlot=336
INF 2020-01-29 14:08:15+01:00 Attestation resolved                       topics="attpool" tid=101820 attestation="(aggregation_bits: 0b1000, data: (slot: 336, index: 2, beacon_block_root: \"ce92168d\", source_epoch: 41, source_root: \"144cdc12\", target_epoch: 42, target_root: \"ce92168d\"), signature: \"b10e358c\")" blockSlot=335 cat=filtering current_epoch=42 validations=4
 peers: 1 ❯ epoch: 42, slot: 0/8 (336) ❯ finalized epoch: 39 (58dedb43)                                                                                                                                                                                                        ETH: 0 
DBG 2020-01-29 14:08:15+01:00 Shutting down after having received SIGINT topics="beacnde" tid=101820
INF 2020-01-29 14:08:15+01:00 Shutting down the LibP2P daemon            tid=101820
 peers: 1 ❯ epoch: 42, slot: 0/8 (336) ❯ finalized epoch: 39 (58dedb43)                                                                                                                                                                                                       ETH: 0
14:08:15.793 ERROR       p2pd: error accepting connection: accept unix /tmp/nim-p2pd-101820-1.sock: use of closed network connection daemon.go:151

[deme@daedalus nim-beacon-chain]$ make testnet0
[NimScript] rmDir: /home/deme/repos/nim-beacon-chain/build/eth2-testnets
[NimScript] exec: git clone --quiet --depth=1 https://github.com/eth2-clients/eth2-testnets
[NimScript] exec: nim c -d:chronicles_log_level=DEBUG  --verbosity:0 --hints:off --warnings:off -d:usePcreHeader --passL:"-lpcre" -d:"const_preset=minimal" -o:"/home/deme/repos/nim-beacon-chain/build/beacon_node_testnet0" beacon_chain/beacon_node.nim
[NimScript] mkDir: /home/deme/repos/nim-beacon-chain/build/data/testnet0/dump

Please enter your Goerli Eth1 private key in hex form (e.g. 0x1a2...f3c) in order to become a validator (you'll need access to 32 GoETH).
Hit Enter to skip this.
> 
[NimScript] exec: /home/deme/repos/nim-beacon-chain/build/beacon_node_testnet0     --data-dir="/home/deme/repos/nim-beacon-chain/build/data/testnet0"     --dump=true     --bootstrap-file="/home/deme/repos/nim-beacon-chain/build/eth2-testnets/nimbus/testnet0/bootstrap_nodes.txt"     --state-snapshot="/home/deme/repos/nim-beacon-chain/build/eth2-testnets/nimbus/testnet0/genesis.ssz" --deposit-contract=0x7a845a51c0ab12d84bdadea840f581576db5aa59
DBG 2020-01-29 14:09:56+01:00 Block pool initialized                     topics="beacnde" tid=103271 finalizedHead=58dedb43:312 head=ce92168d:335 tail=c52955ab:0 totalBlocks=317
/home/deme/repos/nim-beacon-chain/beacon_chain/beacon_node.nim(1161) beacon_node
/home/deme/repos/nim-beacon-chain/beacon_chain/beacon_node.nim(215) init
/home/deme/repos/nim-beacon-chain/beacon_chain/block_pool.nim(246) init
/home/deme/repos/nim-beacon-chain/vendor/nimbus-build-system/vendor/Nim/lib/pure/options.nim(211) get
[[reraised from:
/home/deme/repos/nim-beacon-chain/beacon_chain/beacon_node.nim(1161) beacon_node
/home/deme/repos/nim-beacon-chain/vendor/nim-chronos/chronos/asyncloop.nim(948) waitFor
/home/deme/repos/nim-beacon-chain/vendor/nim-chronos/chronos/asyncfutures2.nim(423) read
/home/deme/repos/nim-beacon-chain/vendor/nim-chronos/chronos/asyncfutures2.nim(407) internalCheckComplete
]]
Error: unhandled exception: Can't obtain a value from a `none`
Async traceback:
  /home/deme/repos/nim-beacon-chain/beacon_chain/beacon_node.nim(1161)                              beacon_node
  /home/deme/repos/nim-beacon-chain/beacon_chain/beacon_node.nim(215)                               init
  /home/deme/repos/nim-beacon-chain/beacon_chain/block_pool.nim(246)                                init
  /home/deme/repos/nim-beacon-chain/vendor/nimbus-build-system/vendor/Nim/lib/pure/options.nim(211) get
Exception message: Can't obtain a value from a `none`
Exception type: [UnpackError]

commit cf14b7ac37bbf8dee53e9b79148cfc654efbf188

Encountered by stopping nim-beacon-chain on testnet0 by Ctrl-C press. On resume via make testnet0 the issue occurred. I've tried to reproduce a few times after a clean, but did not see it occur again.

stefantalpalaru commented 4 years ago

Also seen on a server:

Feb 11 14:54:38 master-01.aws-eu-central-1a.nimbus.test docker/beacon-node-testnet0-1[999]: /root/nim-beacon-chain/beacon_chain/beacon_node.nim(1161) beacon_node
Feb 11 14:54:38 master-01.aws-eu-central-1a.nimbus.test docker/beacon-node-testnet0-1[999]: /root/nim-beacon-chain/beacon_chain/beacon_node.nim(215) init
Feb 11 14:54:38 master-01.aws-eu-central-1a.nimbus.test docker/beacon-node-testnet0-1[999]: /root/nim-beacon-chain/beacon_chain/block_pool.nim(246) init
Feb 11 14:54:38 master-01.aws-eu-central-1a.nimbus.test docker/beacon-node-testnet0-1[999]: /root/nim-beacon-chain/vendor/nimbus-build-system/vendor/Nim/lib/pure/options.nim(211) get
Feb 11 14:54:38 master-01.aws-eu-central-1a.nimbus.test docker/beacon-node-testnet0-1[999]: [[reraised from:
Feb 11 14:54:38 master-01.aws-eu-central-1a.nimbus.test docker/beacon-node-testnet0-1[999]: /root/nim-beacon-chain/beacon_chain/beacon_node.nim(1161) beacon_node
Feb 11 14:54:38 master-01.aws-eu-central-1a.nimbus.test docker/beacon-node-testnet0-1[999]: /root/nim-beacon-chain/vendor/nim-chronos/chronos/asyncloop.nim(948) waitFor
Feb 11 14:54:38 master-01.aws-eu-central-1a.nimbus.test docker/beacon-node-testnet0-1[999]: /root/nim-beacon-chain/vendor/nim-chronos/chronos/asyncfutures2.nim(423) read
Feb 11 14:54:38 master-01.aws-eu-central-1a.nimbus.test docker/beacon-node-testnet0-1[999]: /root/nim-beacon-chain/vendor/nim-chronos/chronos/asyncfutures2.nim(407) internalCheckComplete
Feb 11 14:54:38 master-01.aws-eu-central-1a.nimbus.test docker/beacon-node-testnet0-1[999]: ]]
Feb 11 14:54:38 master-01.aws-eu-central-1a.nimbus.test docker/beacon-node-testnet0-1[999]: Error: unhandled exception: Can't obtain a value from a `none`
arnetheduck commented 4 years ago

most likely cause: justification happened on an epoch boundary that had no block, so the latest justified block is pointing to a preceding state..