Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Continuously changing configurations and restarting the node caused the node to panic during runtime. #30968

Closed
sdjasj opened this issue Dec 29, 2024 · 2 comments · Fixed by #30973
Labels

Comments

@sdjasj
Copy link

sdjasj commented Dec 29, 2024

System information

Geth
Version: 1.13.15-stable
Git Commit: c5ba367
Git Commit Date: 20240417
Architecture: amd64
Go Version: go1.22.3
Operating System: linux
OS & Version: Ubuntu 22.04.3 LTS

Expected behaviour

After changing configurations, the node should not panic; at the very least, it should provide a friendly message to the user before panicking.

Actual behaviour

I repeatedly modified the configuration file and restarted the node. During one of the restarts, the node panicked at runtime. Below are the logs and error code from the node when the panic occurred.
1735471549306

Steps to reproduce the behaviour

I saved the node configuration file from when the panic occurred and attempted to reproduce the issue, but was unable to do so. However, the panic did indeed happen.

[Eth]
NetworkId = 123454321
SyncMode = "snap"
EthDiscoveryURLs = []
SnapDiscoveryURLs = []
NoPruning = false
NoPrefetch = false
TxLookupLimit = 2350000
TransactionHistory = 2350000
LightPeers = 100
DatabaseFreezer = "geth"
TrieCleanCache = 154
TrieDirtyCache = 256
TrieTimeout = 3600000000000
SnapshotCache = 102
Preimages = false
EnablePreimageRecording = false
RPCGasCap = 50000000
RPCEVMTimeout = 5000000000

[Eth.Miner]
GasFloor = 0
GasCeil = 30000000
GasPrice = 1000000000
Recommit = 2000000000
NewPayloadTimeout = 2000000000

[Eth.TxPool]
Locals = []
NoLocals = false
Journal = "transactions.rlp"
Rejournal = 3600000000000
PriceLimit = 2684354560
PriceBump = 10
AccountSlots = 16
GlobalSlots = 1024
AccountQueue = 64
GlobalQueue = 1024
Lifetime = 10800000000000

[Eth.BlobPool]
Datadir = "blobpool"
Datacap = 2684354560
PriceBump = 100

[Eth.GPO]
Blocks = 20
Percentile = 60
MaxHeaderHistory = 1024
MaxBlockHistory = 2000000000
MaxPrice = 500000000000
IgnorePrice = 2

[Node]
DataDir = "node2"
IPCPath = "geth.ipc"
HTTPHost = ""
HTTPPort = 8545
HTTPVirtualHosts = ["localhost"]
HTTPModules = ["net", "web3", "eth"]
AuthAddr = "localhost"
AuthPort = 8552
AuthVirtualHosts = ["localhost"]
WSHost = ""
WSPort = 8546
WSModules = ["net", "web3", "eth"]
GraphQLVirtualHosts = ["localhost"]
BatchRequestLimit = 1000
BatchResponseMaxSize = 25000000

[Node.P2P]
MaxPeers = 50
NoDiscovery = false
DiscoveryV4 = true
BootstrapNodes = ["enode://736e6c1b287d08e0508cec7ef0bbcf307dd1ce96018c5fc368b2f20c30231135877d79f286c08c8f3ed53122064e9b972ccb58e789572eca5281597190cd2258@127.0.0.1:0?discport=30305"]
BootstrapNodesV5 = ["enode://736e6c1b287d08e0508cec7ef0bbcf307dd1ce96018c5fc368b2f20c30231135877d79f286c08c8f3ed53122064e9b972ccb58e789572eca5281597190cd2258@127.0.0.1:0?discport=30305"]
StaticNodes = []
TrustedNodes = []
ListenAddr = ":30307"
DiscAddr = ""

[Node.HTTPTimeouts]
ReadTimeout = 30000000000
ReadHeaderTimeout = 30000000000
WriteTimeout = 30000000000
IdleTimeout = 120000000000

[Metrics]
HTTP = "127.0.0.1"
Port = 6060
InfluxDBDatabase = "geth"
InfluxDBUsername = "test"
InfluxDBPassword = "test"
InfluxDBTags = "host=localhost"
InfluxDBToken = "test"
InfluxDBBucket = "geth"
InfluxDBOrganization = "geth"

Backtrace

INFO [10-24|20:27:14.910] Starting Geth on Ethereum mainnet...
INFO [10-24|20:27:14.911] Bumping default cache on mainnet         provided=1024 updated=4096
INFO [10-24|20:27:14.912] Maximum peer count                       ETH=50 total=50
INFO [10-24|20:27:14.914] Smartcard socket not found, disabling    err="stat /run/pcscd/pcscd.comm: no such file or directory"
INFO [10-24|20:27:14.920] Set global gas cap                       cap=50,000,000
INFO [10-24|20:27:14.920] Initializing the KZG library             backend=gokzg
INFO [10-24|20:27:14.958] Allocated trie memory caches             clean=614.00MiB dirty=1024.00MiB
INFO [10-24|20:27:14.958] Using pebble as the backing database
INFO [10-24|20:27:14.958] Allocated cache and file handles         database=/root/test/fuzznode/node2/geth/chaindata cache=2.00GiB handles=524,288
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0xc70911]

goroutine 1 [running]:
github.com/ethereum/go-ethereum/core/rawdb.NewFreezer({0xc001266300, 0x29}, {0x195bf96, 0x11}, 0x0, 0x77359400, 0xc000693e90)
	github.com/ethereum/go-ethereum/core/rawdb/freezer.go:99 +0x231
github.com/ethereum/go-ethereum/core/rawdb.NewChainFreezer(...)
	github.com/ethereum/go-ethereum/core/rawdb/freezer.go:82
github.com/ethereum/go-ethereum/core/rawdb.newChainFreezer({0xc001266300?, 0x23?}, {0x195bf96?, 0x10?}, 0x10?)
	github.com/ethereum/go-ethereum/core/rawdb/chain_freezer.go:56 +0x2f
github.com/ethereum/go-ethereum/core/rawdb.NewDatabaseWithFreezer({0x7f53ad68efa0, 0xc0003217d0}, {0xc001266120, 0x23}, {0x195bf96, 0x11}, 0x0)
	github.com/ethereum/go-ethereum/core/rawdb/database.go:203 +0x85
github.com/ethereum/go-ethereum/core/rawdb.Open({{0x0, 0x0}, {0xc0012660f0, 0x28}, {0xc001266120, 0x23}, {0x195bf96, 0x11}, 0x800, 0x80000, ...})
	github.com/ethereum/go-ethereum/core/rawdb/database.go:414 +0xbe
github.com/ethereum/go-ethereum/node.(*Node).OpenDatabaseWithFreezer(0xc0003382a0, {0x1951146, 0x9}, 0x800, 0x80000, {0xc000577601, 0x4}, {0x195bf96, 0x11}, 0x0)
	github.com/ethereum/go-ethereum/node/node.go:760 +0x338
github.com/ethereum/go-ethereum/eth.New(0xc0003382a0, 0xc0001dc708)
	github.com/ethereum/go-ethereum/eth/backend.go:132 +0x505
github.com/ethereum/go-ethereum/cmd/utils.RegisterEthService(0xc0003382a0, 0x1958a2e?)
	github.com/ethereum/go-ethereum/cmd/utils/flags.go:1863 +0x25
main.makeFullNode(0xc0007cc040)
	github.com/ethereum/go-ethereum/cmd/geth/config.go:180 +0x212
main.geth(0xc0007cc040)
	github.com/ethereum/go-ethereum/cmd/geth/main.go:340 +0x125
github.com/urfave/cli/v2.(*Command).Run(0xc0006906e0, 0xc0007cc040, {0xc000290330, 0x3, 0x3})
	github.com/urfave/cli/[email protected]/command.go:274 +0x93f
github.com/urfave/cli/v2.(*App).RunContext(0xc000016b40, {0x1ebe4b8, 0x2c51580}, {0xc000290330, 0x3, 0x3})
	github.com/urfave/cli/[email protected]/app.go:332 +0x566
github.com/urfave/cli/v2.(*App).Run(...)
	github.com/urfave/cli/[email protected]/app.go:309
main.main()
	github.com/ethereum/go-ethereum/cmd/geth/main.go:270 +0x45

When submitting logs: please submit them as text and not screenshots.

@MariusVanDerWijden
Copy link
Member

Thanks for submitting this issue, the problem is that the Lstat fails with an error that we did not handle correctly, I created a PR to fix it

@eth77re
Copy link

eth77re commented Jan 5, 2025

با تشکر فراوان

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants