diff options
author | Teddy Wing | 2024-03-09 18:37:00 +0100 |
---|---|---|
committer | Teddy Wing | 2024-03-09 18:37:00 +0100 |
commit | 160d3bef43b386e6a3db8990ad78c3177c56fc3a (patch) | |
tree | 9e68f9e1382dcde756a328148d1d5d70731cdf61 | |
parent | 9aa2dfef38d08ba5a101a7c1b01fecbb1cec240d (diff) | |
download | gocapturedrefrace-160d3bef43b386e6a3db8990ad78c3177c56fc3a.tar.bz2 |
go.mod: Upgrade to golang.org/x/tools v0.15.0
The version previously declared caused a panic when running under Go
1.22:
$ go1.22.0 test -v
=== RUN Test
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=0x2 addr=0x0 pc=0x102ffd84c]
goroutine 92 [running]:
go/types.(*Checker).handleBailout(0x140002e0000, 0x140002ddb68)
/tmp/go/src/go/types/check.go:339 +0x9c
panic({0x103110f80?, 0x1032d4670?})
/tmp/go/src/runtime/panic.go:765 +0x124
go/types.(*StdSizes).Sizeof(0x0, {0x10315b768?, 0x1032d56a0})
/tmp/go/src/go/types/sizes.go:228 +0x2fc
go/types.(*Config).sizeof(...)
/tmp/go/src/go/types/sizes.go:331
go/types.representableConst.func1({0x10315b768?, 0x1032d56a0?})
/tmp/go/src/go/types/const.go:76 +0x9c
go/types.representableConst({0x10315ca48, 0x1032cbe00}, 0x140002e0000, 0x1032d56a0, 0x0)
/tmp/go/src/go/types/const.go:92 +0x138
go/types.(*Checker).arrayLength(0x140002e0000, {0x10315bb80?, 0x140002b2160?})
/tmp/go/src/go/types/typexpr.go:504 +0x23c
go/types.(*Checker).typInternal(0x140002e0000, {0x10315bb50?, 0x140002ac090?}, 0x1033453c8?)
/tmp/go/src/go/types/typexpr.go:299 +0x934
go/types.(*Checker).definedType(0x140002b23e0?, {0x10315bb50?, 0x140002ac090}, 0x102ff9fd8?)
/tmp/go/src/go/types/typexpr.go:180 +0x30
go/types.(*Checker).varType(0x140002e0000, {0x10315bb50?, 0x140002ac090})
/tmp/go/src/go/types/typexpr.go:145 +0x30
go/types.(*Checker).structType(0x140002e0000, 0x140002ac3c0, 0x140002ac3c0?)
/tmp/go/src/go/types/struct.go:113 +0x128
go/types.(*Checker).typInternal(0x140002e0000, {0x10315bdc0?, 0x14000290468?}, 0x102e87278?)
/tmp/go/src/go/types/typexpr.go:316 +0xb14
go/types.(*Checker).definedType(0x0?, {0x10315bdc0?, 0x14000290468}, 0x102e3c294?)
/tmp/go/src/go/types/typexpr.go:180 +0x30
go/types.(*Checker).typeDecl(0x140002e0000, 0x140002d4370, 0x140002c2040, 0x778?)
/tmp/go/src/go/types/decl.go:595 +0x544
go/types.(*Checker).objDecl(0x140002e0000, {0x10315df58, 0x140002d4370}, 0x102fc77b8?)
/tmp/go/src/go/types/decl.go:197 +0x7d0
go/types.(*Checker).packageObjects(0x140002e0000)
/tmp/go/src/go/types/resolver.go:675 +0x350
go/types.(*Checker).checkFiles(0x140002e0000, {0x140002ae000, 0x1, 0x1})
/tmp/go/src/go/types/check.go:387 +0x1d8
go/types.(*Checker).Files(...)
/tmp/go/src/go/types/check.go:344
golang.org/x/tools/go/packages.(*loader).loadPackage(0x140001501c0, 0x1400016b1a0)
...go/pkg/mod/golang.org/x/tools@v0.9.1/go/packages/packages.go:1052 +0x97c
golang.org/x/tools/go/packages.(*loader).loadRecursive.func1()
...go/pkg/mod/golang.org/x/tools@v0.9.1/go/packages/packages.go:851 +0x178
sync.(*Once).doSlow(0x0?, 0x0?)
/tmp/go/src/sync/once.go:74 +0x100
sync.(*Once).Do(...)
/tmp/go/src/sync/once.go:65
golang.org/x/tools/go/packages.(*loader).loadRecursive(0x0?, 0x0?)
...go/pkg/mod/golang.org/x/tools@v0.9.1/go/packages/packages.go:839 +0x50
golang.org/x/tools/go/packages.(*loader).loadRecursive.func1.1(0x0?)
...go/pkg/mod/golang.org/x/tools@v0.9.1/go/packages/packages.go:846 +0x30
created by golang.org/x/tools/go/packages.(*loader).loadRecursive.func1 in goroutine 40
...go/pkg/mod/golang.org/x/tools@v0.9.1/go/packages/packages.go:845 +0x84
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=0x2 addr=0x0 pc=0x102ffd84c]
goroutine 65 [running]:
go/types.(*Checker).handleBailout(0x140001c2000, 0x14000171b68)
/tmp/go/src/go/types/check.go:339 +0x9c
panic({0x103110f80?, 0x1032d4670?})
/tmp/go/src/runtime/panic.go:765 +0x124
go/types.(*StdSizes).Sizeof(0x0, {0x10315b768?, 0x1032d56a0})
/tmp/go/src/go/types/sizes.go:228 +0x2fc
go/types.(*Config).sizeof(...)
/tmp/go/src/go/types/sizes.go:331
go/types.representableConst.func1({0x10315b768?, 0x1032d56a0?})
/tmp/go/src/go/types/const.go:76 +0x9c
go/types.representableConst({0x10315ca48, 0x1032cbd80}, 0x140001c2000, 0x1032d56a0, 0x1400016fec8)
/tmp/go/src/go/types/const.go:92 +0x138
go/types.(*Checker).representation(0x10315b768?, 0x140001b0ec0, 0x1400016ff48?)
/tmp/go/src/go/types/const.go:256 +0x68
go/types.(*Checker).implicitTypeAndValue(0x140001c2000, 0x140001b0ec0, {0x10315b768?, 0x1032d56a0?})
/tmp/go/src/go/types/expr.go:375 +0x2e8
go/types.(*Checker).convertUntyped(0x140001c2000, 0x140001b0ec0, {0x10315b768, 0x1032d56a0})
/tmp/go/src/go/types/const.go:289 +0x30
go/types.(*Checker).matchTypes(0x14000170698?, 0x140001b0e80, 0x140001b0ec0)
/tmp/go/src/go/types/expr.go:926 +0x7c
go/types.(*Checker).binary(0x14000170818?, 0x140001b0e80, {0x10315bf40?, 0x140001a20f0}, {0x10315ba90?, 0x140001a8100}, {0x10315bb80?, 0x140001a8120}, 0x28, 0x102e6da60?)
/tmp/go/src/go/types/expr.go:800 +0x128
go/types.(*Checker).exprInternal(0x140001c2000, {0x0, 0x0}, 0x140001b0e80, {0x10315bf40, 0x140001a20f0?}, {0x0?, 0x0?})
/tmp/go/src/go/types/expr.go:1401 +0x1634
go/types.(*Checker).rawExpr(0x140001c2000, {0x0, 0x0}, 0x140001b0e80, {0x10315bf40?, 0x140001a20f0?}, {0x0?, 0x0?}, 0x0)
/tmp/go/src/go/types/expr.go:965 +0x134
go/types.(*Checker).expr(0x140001c2000?, {0x0?, 0x0?}, 0x103076b67?, {0x10315bf40?, 0x140001a20f0?})
/tmp/go/src/go/types/expr.go:1498 +0x40
go/types.(*Checker).stmt(0x140001c2000, 0x0, {0x10315c270?, 0x140001b0140?})
/tmp/go/src/go/types/stmt.go:574 +0x1314
go/types.(*Checker).stmtList(0x140002c78e8?, 0x0, {0x140001a8280?, 0x0?, 0x0?})
/tmp/go/src/go/types/stmt.go:125 +0x88
go/types.(*Checker).funcBody(0x140001c2000, 0x14000196720, {0x14000198068?, 0x10315e1d8?}, 0x140001b0bc0, 0x140001a2180, {0x0, 0x0})
/tmp/go/src/go/types/stmt.go:45 +0x244
go/types.(*Checker).funcDecl.func1()
/tmp/go/src/go/types/decl.go:826 +0x44
go/types.(*Checker).processDelayed(0x140001c2000, 0x0)
/tmp/go/src/go/types/check.go:446 +0x12c
go/types.(*Checker).checkFiles(0x140001c2000, {0x140001a4000, 0x1, 0x1})
/tmp/go/src/go/types/check.go:390 +0x1fc
go/types.(*Checker).Files(...)
/tmp/go/src/go/types/check.go:344
golang.org/x/tools/go/packages.(*loader).loadPackage(0x140001501c0, 0x1400016b2f0)
...go/pkg/mod/golang.org/x/tools@v0.9.1/go/packages/packages.go:1052 +0x97c
golang.org/x/tools/go/packages.(*loader).loadRecursive.func1()
...go/pkg/mod/golang.org/x/tools@v0.9.1/go/packages/packages.go:851 +0x178
sync.(*Once).doSlow(0x0?, 0x0?)
/tmp/go/src/sync/once.go:74 +0x100
sync.(*Once).Do(...)
/tmp/go/src/sync/once.go:65
golang.org/x/tools/go/packages.(*loader).loadRecursive(0x0?, 0x0?)
...go/pkg/mod/golang.org/x/tools@v0.9.1/go/packages/packages.go:839 +0x50
golang.org/x/tools/go/packages.(*loader).loadRecursive.func1.1(0x0?)
...go/pkg/mod/golang.org/x/tools@v0.9.1/go/packages/packages.go:846 +0x30
created by golang.org/x/tools/go/packages.(*loader).loadRecursive.func1 in goroutine 61
...go/pkg/mod/golang.org/x/tools@v0.9.1/go/packages/packages.go:845 +0x84
exit status 2
FAIL gopkg.teddywing.com/capturedrefrace 0.140s
I tried upgrading to the latest version of golang.org/x/tools, v0.19.0,
but this caused the following error while bisecting the Go compiler:
$ /tmp/go/bin/go test -v
# golang.org/x/tools/internal/aliases
...go/pkg/mod/golang.org/x/tools@v0.19.0/internal/aliases/aliases_go122.go:21:20: undefined: types.Alias
...go/pkg/mod/golang.org/x/tools@v0.19.0/internal/aliases/aliases_go122.go:24:54: undefined: types.Unalias
...go/pkg/mod/golang.org/x/tools@v0.19.0/internal/aliases/aliases_go122.go:30:13: undefined: types.NewAlias
...go/pkg/mod/golang.org/x/tools@v0.19.0/internal/aliases/aliases_go122.go:66:67: undefined: types.Alias
# golang.org/x/tools/internal/versions
...go/pkg/mod/golang.org/x/tools@v0.19.0/internal/versions/types_go122.go:30:15: info.FileVersions undefined (type *types.Info has no field or method FileVersions)
...go/pkg/mod/golang.org/x/tools@v0.19.0/internal/versions/types_go122.go:40:7: info.FileVersions undefined (type *types.Info has no field or method FileVersions)
FAIL gopkg.teddywing.com/capturedrefrace [build failed]
The error was caused by the addition of special `types.Alias` handling
for Go 1.21 and Go 1.22
(https://github.com/golang/tools/commit/0be034b1e193e98221abc05e710b8ecbf8cc9d45).
The earliest tagged version of golang.org/x/tools that I could find
without the `internal/aliases` package was v0.15.0, so use that to
bisect the Go codebase.
-rw-r--r-- | go.mod | 6 | ||||
-rw-r--r-- | go.sum | 14 |
2 files changed, 10 insertions, 10 deletions
@@ -2,9 +2,9 @@ module gopkg.teddywing.com/capturedrefrace go 1.20 -require golang.org/x/tools v0.9.1 +require golang.org/x/tools v0.15.0 require ( - golang.org/x/mod v0.10.0 // indirect - golang.org/x/sys v0.8.0 // indirect + golang.org/x/mod v0.16.0 // indirect + golang.org/x/sys v0.14.0 // indirect ) @@ -1,7 +1,7 @@ -golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= -golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= -golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo= -golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= +golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= +golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= |