Desde que se actualizó a la versión 1.6.1, el nodo Geth se cuelga de vez en cuando (una vez a la semana) con el siguiente error fatal:
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
¿Alguna idea de cuál es la razón de este error? ¿como arreglar? ¡Gracias!
Geth v1.6.1
ahora está desactualizado. Actualización a Geth v1.6.5
(apodada Hat Trick), lanzada para evitar un ataque reciente de DOS en la red principal. Si el problema persiste, repórtelo a través del repositorio go-ethereum GitHub: https://github.com/ethereum/go-ethereum
Según la página de lanzamientos de Ethereum, https://github.com/ethereum/go-ethereum/releases , Geth v1.6.1
se lanzó el 4 de mayo. Su mejor apuesta para solucionarlo sería actualizar su cliente y mantenerse al día con las últimas versiones. Es muy posible que lo que haya causado este error se haya solucionado de 1.6.1
todos modos.
En cuanto al error en sí, según stacktrace, todo sale mal aquí:/../src/github.com/ethereum/go-ethereum/consensus/ethash/algorithm.go:314
El historial de revisión en GitHub muestra que la última revisión del archivo fue nuevamente a principios de mayo, por lo que la condición en la línea 314 en la que explota su cliente no ha cambiado con versiones posteriores:
for j := uint32(0); j < mixBytes/hashBytes; j++ {
copy(temp[j*hashWords:], lookup(2*parent+j))
}
No he revisado los problemas conocidos, pero según el historial de revisión mínimo, supongo que si se trata de un error, estaría en otra parte del cliente. En general, actualizaría su cliente y, si aún tiene problemas, intente regenerar su archivo DAG, tal vez esté dañado de alguna manera. Si el problema persiste después de eso, publique un problema en el repositorio.
Este error continúa afectando a los clientes desde 1.7.2 y se informa aquí: https://github.com/ethereum/go-ethereum/issues/14552
ismael
Juan Ignacio Pérez Sacristán
ismael
Juan Ignacio Pérez Sacristán