Go-Ethereum
Geth 1.6.1 掛起拋出“意外故障地址”致命錯誤
自從升級到 1.6.1 版本後,Geth 節點不時(每週一次)掛起,並出現以下致命錯誤:
fatal error: fault [signal SIGSEGV: segmentation violation code=0x1 addr=0x7f6453b72c88 pc=0x461097] goroutine 1500070 [running]: runtime.throw(0xe9b327, 0x5) /home/travis/.gimme/versions/go1.8.1.linux.amd64/src/runtime/panic.go:596 +0x95 fp=0xc43095a9f0 sp=0xc43095a9d0 runtime.sigpanic() /home/travis/.gimme/versions/go1.8.1.linux.amd64/src/runtime/signal_unix.go:297 +0x28c fp=0xc43095aa40 sp=0xc43095a9f0 runtime.memmove(0xc423ad8b80, 0x7f6453b72c88, 0x40) /home/travis/.gimme/versions/go1.8.1.linux.amd64/src/runtime/memmove_amd64.s:184 +0x657 fp=0xc43095aa48 sp=0xc43095aa40 github.com/ethereum/go-ethereum/consensus/ethash.hashimoto(0xc43095ad78, 0x20, 0x20, 0x3ff85f426cae9afa, 0x50ffff80, 0xc448b3abe0, 0xc43095ac48, 0x40b944, 0xd2b540, 0xc427ef5320, ...) /home/travis/gopath/src/github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:314 +0x36e fp=0xc43095abe0 sp=0xc43095aa48 github.com/ethereum/go-ethereum/consensus/ethash.hashimotoFull(0x7f6453000008, 0x143fffe0, 0x143fffe0, 0xc43095ad78, 0x20, 0x20, 0x3ff85f426cae9afa, 0xc448b3ab20, 0x20, 0x20, ...) /home/travis/gopath/src/github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:357 +0xbe fp=0xc43095ac58 sp=0xc43095abe0 github.com/ethereum/go-ethereum/consensus/ethash.(*Ethash).mine(0xc420fc0b40, 0xc43363c990, 0x0, 0x3ff85f426cac4155, 0xc427ef5320, 0xc427ef5380) /home/travis/gopath/src/github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:130 +0x451 fp=0xc43095af68 sp=0xc43095ac58 github.com/ethereum/go-ethereum/consensus/ethash.(*Ethash).Seal.func1(0xc420695aa0, 0xc420fc0b40, 0xc43363c990, 0xc427ef5320, 0xc427ef5380, 0x0, 0x3ff85f426cac4155) /home/travis/gopath/src/github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:72 +0x87 fp=0xc43095afa8 sp=0xc43095af68 runtime.goexit() /home/travis/.gimme/versions/go1.8.1.linux.amd64/src/runtime/asm_amd64.s:2197 +0x1 fp=0xc43095afb0 sp=0xc43095afa8 created by github.com/ethereum/go-ethereum/consensus/ethash.(*Ethash).Seal /home/travis/gopath/src/github.com/ethereum/go-ethereum/consensus/ethash/sealer.go:73 +0x1d7
知道這個錯誤的原因是什麼嗎?怎麼修?謝謝!
Geth v1.6.1
現在已經過時了。更新到Geth v1.6.5
(綽號帽子戲法),發布以防止最近對主網的 DOS 攻擊。如果問題仍然存在,請通過 go-ethereum GitHub 儲存庫報告:https ://github.com/ethereum/go-ethereum根據乙太坊發布頁面,https://github.com/ethereum/go-ethereum/releases於 5 月 4日
Geth v1.6.1
發布。您最好的解決辦法是更新您的客戶端,並與最新版本保持同步。無論如何,完全有可能導致此錯誤的任何原因都已得到修復1.6.1
。就錯誤本身而言,根據堆棧跟踪,這裡的一切都出錯了:
/../src/github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:314
GitHub 中的修訂歷史顯示,該文件的最後一次修訂是在 5 月初,因此您的客戶端崩潰的第 314 行的條件在後續版本中沒有改變:
for j := uint32(0); j < mixBytes/hashBytes; j++ { copy(temp[j*hashWords:], lookup(2*parent+j)) }
我沒有查看已知問題,但根據最小的修訂歷史,我猜如果它是一個錯誤,它會在客戶端的其他地方。一般來說,我會更新您的客戶端,如果您仍然遇到問題,請嘗試重新生成您的 DAG 文件,可能它已以某種方式損壞。如果之後問題仍然存在,請在 repo 上發布問題。