atc0005 / go-ci

Tooling for linting, testing and building Go applications

Home Page:https://hub.docker.com/r/atc0005/go-ci

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

`orijtech/tickeryzer` linter failing on Go 1.22rc2 with `runtime error: invalid memory address or nil pointer dereference` error

atc0005 opened this issue · comments

Overview

This linter is failing in the same way that the orijtech/structslop linter is for Go 1.22rc2:

root@33735e4cad59:/go/check-restart# tickeryzer ./...
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=0x598f9e]

goroutine 66 [running]:
go/types.(*Checker).handleBailout(0xc00098c000, 0xc00098bc60)
        /usr/local/go/src/go/types/check.go:367 +0x88
panic({0x71a8a0?, 0x9a5b20?})
        /usr/local/go/src/runtime/panic.go:770 +0x132
go/types.(*StdSizes).Sizeof(0x0, {0x7e8a28, 0x9a9a80})
        /usr/local/go/src/go/types/sizes.go:228 +0x31e
go/types.(*Config).sizeof(...)
        /usr/local/go/src/go/types/sizes.go:333
go/types.representableConst.func1({0x7e8a28?, 0x9a9a80?})
        /usr/local/go/src/go/types/const.go:76 +0x9e
go/types.representableConst({0x7e9e18, 0x99e440}, 0xc00098c000, 0x9a9a80, 0xc00098a078)
        /usr/local/go/src/go/types/const.go:92 +0x192
go/types.(*Checker).representation(0xc00098c000, 0xc000278cc0, 0x9a9a80)
        /usr/local/go/src/go/types/const.go:256 +0x65
go/types.(*Checker).implicitTypeAndValue(0xc00098c000, 0xc000278cc0, {0x7e8a28, 0x9a9a80})
        /usr/local/go/src/go/types/expr.go:375 +0x30d
go/types.(*Checker).convertUntyped(0xc00098c000, 0xc000278cc0, {0x7e8a28, 0x9a9a80})
        /usr/local/go/src/go/types/const.go:289 +0x3f
go/types.(*Checker).matchTypes(0xc00098c000, 0xc000278c80, 0xc000278cc0)
        /usr/local/go/src/go/types/expr.go:926 +0x79
go/types.(*Checker).binary(0xc00098c000, 0xc000278c80, {0x7e9530, 0xc0005360c0}, {0x7e92c0, 0xc000014160}, {0x7e98f0, 0xc000014180}, 0x28, 0x33848)
        /usr/local/go/src/go/types/expr.go:800 +0x166
go/types.(*Checker).exprInternal(0xc00098c000, 0x0, 0xc000278c80, {0x7e9530, 0xc0005360c0}, {0x0, 0x0})
        /usr/local/go/src/go/types/expr.go:1416 +0x206
go/types.(*Checker).rawExpr(0xc00098c000, 0x0, 0xc000278c80, {0x7e9530?, 0xc0005360c0?}, {0x0?, 0x0?}, 0x0)
        /usr/local/go/src/go/types/expr.go:979 +0x19e
go/types.(*Checker).expr(0xc00098c000, 0x7e87d0?, 0xc000278c80, {0x7e9530?, 0xc0005360c0?})
        /usr/local/go/src/go/types/expr.go:1513 +0x30
go/types.(*Checker).stmt(0xc00098c000, 0x0, {0x7e9800, 0xc00054c100})
        /usr/local/go/src/go/types/stmt.go:570 +0x11f2
go/types.(*Checker).stmtList(0xc00098c000, 0x0, {0xc0000142e0?, 0x0?, 0x0?})
        /usr/local/go/src/go/types/stmt.go:121 +0x85
go/types.(*Checker).funcBody(0xc00098c000, 0x7e8a28?, {0xc000012130?, 0x9a9c60?}, 0xc0002789c0, 0xc000536150, {0x0?, 0x0?})
        /usr/local/go/src/go/types/stmt.go:41 +0x331
go/types.(*Checker).funcDecl.func1()
        /usr/local/go/src/go/types/decl.go:852 +0x3a
go/types.(*Checker).processDelayed(0xc00098c000, 0x0)
        /usr/local/go/src/go/types/check.go:467 +0x162
go/types.(*Checker).checkFiles(0xc00098c000, {0xc00004a028, 0x1, 0x1})
        /usr/local/go/src/go/types/check.go:411 +0x1cc
go/types.(*Checker).Files(...)
        /usr/local/go/src/go/types/check.go:372
golang.org/x/tools/go/packages.(*loader).loadPackage(0xc000112000, 0xc00046cba0)
        /go/pkg/mod/golang.org/x/tools@v0.1.10/go/packages/packages.go:966 +0x76f
golang.org/x/tools/go/packages.(*loader).loadRecursive.func1()
        /go/pkg/mod/golang.org/x/tools@v0.1.10/go/packages/packages.go:803 +0x1a9
sync.(*Once).doSlow(0x0?, 0x0?)
        /usr/local/go/src/sync/once.go:74 +0xc2
sync.(*Once).Do(...)
        /usr/local/go/src/sync/once.go:65
golang.org/x/tools/go/packages.(*loader).loadRecursive(0x0?, 0x0?)
        /go/pkg/mod/golang.org/x/tools@v0.1.10/go/packages/packages.go:791 +0x4a
golang.org/x/tools/go/packages.(*loader).loadRecursive.func1.1(0x0?)
        /go/pkg/mod/golang.org/x/tools@v0.1.10/go/packages/packages.go:798 +0x26
created by golang.org/x/tools/go/packages.(*loader).loadRecursive.func1 in goroutine 65
        /go/pkg/mod/golang.org/x/tools@v0.1.10/go/packages/packages.go:797 +0x94

root@33735e4cad59:/go/tickeryzer# go get -u ./...
go: downloading golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028
go: upgraded golang.org/x/tools v0.1.10 => v0.17.0
go: upgraded golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 => v0.0.0-20231012003039-104605ab7028
root@33735e4cad59:/go/tickeryzer# go install ./cmd/tickeryzer/
root@33735e4cad59:/go/check-restart# go version -m $(which tickeryzer)
/go/bin/tickeryzer: go1.22rc2
        path    github.com/orijtech/tickeryzer/cmd/tickeryzer
        mod     github.com/orijtech/tickeryzer  (devel)
        dep     golang.org/x/mod        v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0=
        dep     golang.org/x/tools      v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc=
        build   -buildmode=exe
        build   -compiler=gc
        build   DefaultGODEBUG=httplaxcontentlength=1,httpmuxgo121=1,panicnil=1,tls10server=1,tlsrsakex=1,tlsunsafeekm=1
        build   CGO_ENABLED=1
        build   CGO_CFLAGS=
        build   CGO_CPPFLAGS=
        build   CGO_CXXFLAGS=
        build   CGO_LDFLAGS=
        build   GOARCH=amd64
        build   GOOS=linux
        build   GOAMD64=v1
        build   vcs=git
        build   vcs.revision=90800d6fc1aee5bbeb099b505cfeea6af61380a2
        build   vcs.time=2022-05-17T19:27:46Z
        build   vcs.modified=true

root@33735e4cad59:/go/tickeryzer# cd ..
root@33735e4cad59:/go# cd check-restart
root@33735e4cad59:/go/check-restart# tickeryzer ./...

Updating the dependencies (golang.org/x/tools) appears to resolve the issue.

References