Skip to content

Commit f2d9e97

Browse files
authored
Merge pull request #2588 from CortexFoundation/dev
res panic fix
2 parents be2e8b0 + 3c07e39 commit f2d9e97

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

core/block_validator.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package core
1818

1919
import (
20+
"errors"
2021
"fmt"
2122

2223
"github.com/CortexFoundation/CortexTheseus/consensus"
@@ -83,6 +84,9 @@ func (v *BlockValidator) ValidateBody(block *types.Block) error {
8384
// itself. ValidateState returns a database batch if the validation was a success
8485
// otherwise nil and an error is returned.
8586
func (v *BlockValidator) ValidateState(block *types.Block, statedb *state.StateDB, res *ProcessResult) error {
87+
if res == nil {
88+
return errors.New("nil ProcessResult value")
89+
}
8690
header := block.Header()
8791
if block.GasUsed() != res.GasUsed {
8892
return fmt.Errorf("invalid gas used (remote: %d local: %d)", block.GasUsed(), res.GasUsed)

core/blockchain.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1855,7 +1855,7 @@ func (bc *BlockChain) insertChain(chain types.Blocks, verifySeals bool) (int, er
18551855
substart := time.Now()
18561856
res, err := bc.processor.Process(block, statedb, bc.vmConfig)
18571857
if err != nil {
1858-
bc.reportBlock(block, res.Receipts, err)
1858+
bc.reportBlock(block, res, err)
18591859
followupInterrupt.Store(true)
18601860
return it.index, err
18611861
}
@@ -1876,7 +1876,7 @@ func (bc *BlockChain) insertChain(chain types.Blocks, verifySeals bool) (int, er
18761876
// Validate the state using the default validator
18771877
substart = time.Now()
18781878
if err := bc.validator.ValidateState(block, statedb, res); err != nil {
1879-
bc.reportBlock(block, res.Receipts, err)
1879+
bc.reportBlock(block, res, err)
18801880
followupInterrupt.Store(true)
18811881
return it.index, err
18821882
}
@@ -2376,10 +2376,14 @@ func (bc *BlockChain) skipBlock(err error, it *insertIterator) bool {
23762376
}
23772377

23782378
// reportBlock logs a bad block error.
2379-
func (bc *BlockChain) reportBlock(block *types.Block, receipts types.Receipts, err error) {
2379+
func (bc *BlockChain) reportBlock(block *types.Block, res *ProcessResult, err error) {
23802380
if errors.Is(err, vm.ErrRuntime) {
23812381
return
23822382
}
2383+
var receipts types.Receipts
2384+
if res != nil {
2385+
receipts = res.Receipts
2386+
}
23832387
rawdb.WriteBadBlock(bc.db, block)
23842388

23852389
var receiptString string

core/blockchain_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,12 +143,12 @@ func testBlockChainImport(chain types.Blocks, blockchain *BlockChain) error {
143143
}
144144
res, err := blockchain.processor.Process(block, statedb, vm.Config{})
145145
if err != nil {
146-
blockchain.reportBlock(block, res.Receipts, err)
146+
blockchain.reportBlock(block, res, err)
147147
return err
148148
}
149149
err = blockchain.validator.ValidateState(block, statedb, res)
150150
if err != nil {
151-
blockchain.reportBlock(block, res.Receipts, err)
151+
blockchain.reportBlock(block, res, err)
152152
return err
153153
}
154154

0 commit comments

Comments
 (0)