Skip to content

find a nil pointer issue in triePrefetcher. #3031

@galaio

Description

@galaio

System information

Geth version: v1.5.9
OS & Version: Linux
Commit hash : b970c01

Expected behaviour

The node is a validator in testnet, it should sync & mine normally.

Actual behaviour

It gets a panic, and is slashed many times.

Steps to reproduce the behaviour

Start a validator with v1.5.9, wait for the panic. This is an occasional bug that is difficult to reproduce.

Backtrace

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x38 pc=0xc02333]

goroutine 4862 [running]:
github.com/ethereum/go-ethereum/core/state.(*triePrefetcher).prefetch(...)
        /home/runner/work/bsc/bsc/core/state/trie_prefetcher.go:266
github.com/ethereum/go-ethereum/core/state.(*stateObject).finalise(0xc028aa9b30)
        /home/runner/work/bsc/bsc/core/state/state_object.go:305 +0x3f3
github.com/ethereum/go-ethereum/core/state.(*StateDB).Finalise(0xc028d73180, 0x1)
        /home/runner/work/bsc/bsc/core/state/statedb.go:896 +0x3ea
github.com/ethereum/go-ethereum/consensus/parlia.(*Parlia).applyTransaction(0xc014e2e008, 0xc00005f098, {0x36fda68, 0xc028d73180}, 0xc0232da788, {0x36be930, 0xc0726939a0}, 0xc01fe6c0a0, 0xc01b096d08, 0x0, ...)
        /home/runner/work/bsc/bsc/consensus/parlia/parlia.go:2137 +0x1078
github.com/ethereum/go-ethereum/consensus/parlia.(*Parlia).distributeToValidator(0xc014e2e008, 0xc072693a60, {0xd4, 0x47, 0xb4, 0x9c, 0xd0, 0x40, 0xd2, 0xb, ...}, ...)
        /home/runner/work/bsc/bsc/consensus/parlia/parlia.go:2044 +0x39c
github.com/ethereum/go-ethereum/consensus/parlia.(*Parlia).distributeIncoming(0xc014e2e008, {0xd4, 0x47, 0xb4, 0x9c, 0xd0, 0x40, 0xd2, 0xb, 0xc2, ...}, ...)
        /home/runner/work/bsc/bsc/consensus/parlia/parlia.go:1962 +0x6cb
github.com/ethereum/go-ethereum/consensus/parlia.(*Parlia).FinalizeAndAssemble(0xc014e2e008, {0x36ddfd0, 0xc0168c0b08}, 0xc0232da788, 0xc028d73180, 0xc01fe6c0a0, {0xc02d7ed100, 0x8, 0x8}, 0x0)
        /home/runner/work/bsc/bsc/consensus/parlia/parlia.go:1526 +0x70c
github.com/ethereum/go-ethereum/miner.(*worker).commit(0xc00112f448, 0xc02f562d10, 0x35?, 0x1, {0x33b1690?, 0x1?, 0x5288680?})
        /home/runner/work/bsc/bsc/miner/worker.go:1504 +0x2e2
github.com/ethereum/go-ethereum/miner.(*worker).commitWork(0xc00112f448, 0xc03c5f3e30, 0x67ffda9e)
        /home/runner/work/bsc/bsc/miner/worker.go:1471 +0x1abf
github.com/ethereum/go-ethereum/miner.(*worker).mainLoop(0xc00112f448)
        /home/runner/work/bsc/bsc/miner/worker.go:521 +0x22d
created by github.com/ethereum/go-ethereum/miner.newWorker in goroutine 1
        /home/runner/work/bsc/bsc/miner/worker.go:301 +0x668

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions