Q. go mod tidyしたらruntime error: invalid memory address or nil pointer dereference
状況
あるプロジェクトでgo mod tidyを実行したら、以下のようなエラーが発生した。
go: added github.com/pkg/errors v0.9.1panic: runtime error: invalid memory address or nil pointer dereference [recovered] panic: runtime error: invalid memory address or nil pointer dereference[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x5983af]
goroutine 97 [running]:go/types.(*Checker).handleBailout(0xc0004ce600, 0xc00127fbd0) /usr/local/go/src/go/types/check.go:367 +0x88...exit status 2調査
エラーを見ると、golang.org/x/toolsに原因があると推測できる。
実際に調べると、関連していそうな Issue がいくつか見つかった。
- https://github.com/golang/go/issues/62167
- https://github.com/golang/go/issues/64812
- https://github.com/golang/go/issues/61035
これらの問題は既に修正されているが、そもそもよく見るとインストールされているgolang.org/x/toolsのバージョンが古いv0.6.0と分かる。
原因
go mod tidyによって、そのプロジェクトで直接利用されていないgolang.org/x/toolsが削除され、また利用している内製ライブラリの 1 つが保守されておらず古いgolang.org/x/toolsのv0.6.0を利用していたことで、このエラーが発生するようになった。
ちゃんと保守しよう。