O hirunewani blog

Q. go mod tidyしたらruntime error: invalid memory address or nil pointer dereference

Created at

go mod tidyを実行したらruntime error: invalid memory address or nil pointer dereferenceエラーが発生した問題について解決策をまとめた。

Table of Contents

状況

あるプロジェクトでgo mod tidyを実行したら、以下のようなエラーが発生した。

go: added github.com/pkg/errors v0.9.1
panic: 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
...
        /home/circleci/go/pkg/mod/golang.org/x/tools@v0.6.0/go/packages/packages.go:845 +0x94
exit status 2

調査

エラーを見ると、golang.org/x/toolsに原因があると推測できる。 実際に調べると、関連していそうなIssueがいくつか見つかった。

これらの問題は既に修正されているが、そもそもよく見るとインストールされているgolang.org/x/toolsのバージョンが古いv0.6.0と分かる。

原因

go mod tidyによって、そのプロジェクトで直接利用されていないgolang.org/x/toolsが削除され、また利用している内製ライブラリの1つが保守されておらず古いgolang.org/x/toolsv0.6.0を利用していたことで、このエラーが発生するようになった。

ちゃんと保守しよう。