forked from TrueCloudLab/neoneo-go
4809cdf0b0
Issue: panic during mixed 4-nodes consensus setup: ``` 2021-03-18T12:01:50.715Z INFO skip change view {"nc": 0, "nf": 3} 2021-03-18T12:01:52.786Z INFO received ChangeView {"validator": 0, "reason": "Timeout", "new view": 1} 2021-03-18T12:01:53.602Z INFO received ChangeView {"validator": 2, "reason": "Timeout", "new view": 1} 2021-03-18T12:01:56.736Z INFO received ChangeView {"validator": 1, "reason": "Timeout", "new view": 1} 2021-03-18T12:01:56.736Z INFO changing dbft view {"height": 3, "view": 1, "index": 3, "role": "Backup"} 2021-03-18T12:02:01.758Z INFO received PrepareRequest {"validator": 2, "tx": 0} panic: interface conversion: block.Block is nil, not *consensus.neoBlock goroutine 315 [running]: github.com/nspcc-dev/neo-go/pkg/consensus.(*service).verifyBlock(0xc000419540, 0x0, 0x0, 0x4) github.com/nspcc-dev/neo-go/pkg/consensus/consensus.go:427 +0x1306 github.com/nspcc-dev/dbft.(*DBFT).createAndCheckBlock(0xc0001f8840, 0x13f0002) github.com/nspcc-dev/dbft@v0.0.0-20210302103605-cc75991b7cfb/dbft.go:373 +0x27e github.com/nspcc-dev/dbft.(*DBFT).onPrepareRequest(0xc0001f8840, 0x13f4378, 0xc0003b8500) github.com/nspcc-dev/dbft@v0.0.0-20210302103605-cc75991b7cfb/dbft.go:329 +0xdf1 github.com/nspcc-dev/dbft.(*DBFT).OnReceive(0xc0001f8840, 0x13f4378, 0xc0003b8500) github.com/nspcc-dev/dbft@v0.0.0-20210302103605-cc75991b7cfb/dbft.go:247 +0xe25 github.com/nspcc-dev/neo-go/pkg/consensus.(*service).eventLoop(0xc000419540) github.com/nspcc-dev/neo-go/pkg/consensus/consensus.go:297 +0x79d created by github.com/nspcc-dev/neo-go/pkg/consensus.(*service).Start github.com/nspcc-dev/neo-go/pkg/consensus/consensus.go:249 +0xa5 ``` So (*service).verifyBlock is unable to work with nil block. |
||
---|---|---|
.. | ||
testdata | ||
block.go | ||
block_test.go | ||
cache.go | ||
cache_test.go | ||
change_view.go | ||
change_view_test.go | ||
commit.go | ||
commit_test.go | ||
consensus.go | ||
consensus_test.go | ||
crypto.go | ||
crypto_test.go | ||
payload.go | ||
payload_test.go | ||
prepare_request.go | ||
prepare_request_test.go | ||
prepare_response.go | ||
prepare_response_test.go | ||
recovery_message.go | ||
recovery_message_test.go | ||
recovery_request.go | ||
recovery_request_test.go |