Go version
go version go1.20.5 darwin/amd64
Output of go env in your module/workspace:
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/bytedance/Library/Caches/go-build"
GOENV="/Users/bytedance/Library/Application Support/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/bytedance/go/pkg/mod"
GONOPROXY="*.byted.org,*.everphoto.cn,git.smartisan.com"
GONOSUMDB="*.byted.org,*.everphoto.cn,git.smartisan.com"
GOOS="darwin"
GOPATH="/Users/bytedance/go"
GOPRIVATE="*.byted.org,*.everphoto.cn,git.smartisan.com"
GOPROXY="https://go-mod-proxy.byted.org|https://goproxy.cn|https://proxy.golang.org|direct"
GOROOT="/usr/local/opt/go/libexec"
GOSUMDB="sum.golang.google.cn"
GOTMPDIR=""
GOTOOLDIR="/usr/local/opt/go/libexec/pkg/tool/darwin_amd64"
GOVCS=""
GOVERSION="go1.20.5"
GCCGO="gccgo"
GOAMD64="v1"
AR="ar"
CC="cc"
CXX="c++"
CGO_ENABLED="1"
GOMOD="/Users/bytedance/go/src/code.byted.org/test_infra/mocka/go.mod"
GOWORK="/Users/bytedance/go/src/code.byted.org/test_infra/mocka/go.work"
CGO_CFLAGS="-O2 -g"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-O2 -g"
CGO_FFLAGS="-O2 -g"
CGO_LDFLAGS="-O2 -g"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/7j/9grcncv57rl_x3zgwzy1djsw0000gp/T/go-build510662253=/tmp/go-build -gno-record-gcc-switches -fno-common"
What did you do?
here is my code `
cfg := &packages.Config{
Mode: packages.NeedSyntax | packages.NeedTypesInfo |
packages.NeedTypesSizes | packages.NeedTypes | packages.NeedImports |
packages.NeedName | packages.NeedFiles | packages.NeedCompiledGoFiles,
Dir: path.Dir(fp),
}
ps, err := packages.Load(cfg, "")
if err != nil {
return
}
if en := packages.PrintErrors(ps); en > 0 {
for _, tp := range ps {
for _, e := range tp.Errors {
err = e
break
}
if err != nil {
break
}
}
return
}
prog, sps := ssautil.AllPackages(ps, ssa.InstantiateGenerics)
p.ssaFs = prog.Fset
if conf.needAst {
for _, sp := range sps {
sp.SetDebugMode(true)
}
}
prog.Build()`
I load the packages of my project and about to build an ssa program for further analyzing
What did you see happen?
it panics when executing prog.Build(), the panic msg is "nil underlying", and below is the stack
panic: nil underlying
goroutine 10022 [running]:
go/types.(*Named).under(0xc0077472d0)
/usr/local/opt/go/libexec/src/go/types/named.go:494 +0x6e5
go/types.under({0x101742568, 0xc0077472d0})
/usr/local/opt/go/libexec/src/go/types/type.go:23 +0x8c
go/types.computeInterfaceTypeSet(0x0, 0x0, 0xc007701220)
/usr/local/opt/go/libexec/src/go/types/typeset.go:273 +0x7f3
go/types.(*Interface).typeSet(0xc007701220)
/usr/local/opt/go/libexec/src/go/types/interface.go:29 +0x3d
go/types.(*Interface).Complete(0xc007701220)
/usr/local/opt/go/libexec/src/go/types/interface.go:143 +0x4c
golang.org/x/tools/go/ssa.(*subster).interface_(0xc0072878f0, 0xc000b4c2d0)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:304 +0x5ec
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742518, 0xc000b4c2d0})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:138 +0x1012
golang.org/x/tools/go/ssa.(*subster).named(0xc0072878f0, 0xc000349a40)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:344 +0x2c5
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742568, 0xc000349a40})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:141 +0x10c5
golang.org/x/tools/go/ssa.(*subster).var_(0xc0072878f0, 0xc000b74f00)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:213 +0x92
golang.org/x/tools/go/ssa.(*subster).varlist(0xc0072878f0, {0x101742658, 0xc0001a7de8})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:197 +0xcf
golang.org/x/tools/go/ssa.(*subster).tuple(0xc0072878f0, 0xc0001a7de8)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:159 +0x4b
golang.org/x/tools/go/ssa.(*subster).signature(0xc0072878f0, 0xc007762140)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:399 +0x105
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x1017425b8, 0xc007762140})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:132 +0xea8
golang.org/x/tools/go/ssa.(*subster).interface_(0xc0072878f0, 0xc000b4c7d0)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:268 +0x18e
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742518, 0xc000b4c7d0})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:138 +0x1012
golang.org/x/tools/go/ssa.(*subster).named(0xc0072878f0, 0xc000349960)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:344 +0x2c5
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742568, 0xc000349960})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:141 +0x10c5
golang.org/x/tools/go/ssa.(*subster).var_(0xc0072878f0, 0xc000b7f860)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:213 +0x92
golang.org/x/tools/go/ssa.(*subster).varlist(0xc0072878f0, {0x101742658, 0xc000410b28})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:197 +0xcf
golang.org/x/tools/go/ssa.(*subster).tuple(0xc0072878f0, 0xc000410b28)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:159 +0x4b
golang.org/x/tools/go/ssa.(*subster).signature(0xc0072878f0, 0xc007762000)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:398 +0xd2
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x1017425b8, 0xc007762000})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:132 +0xea8
golang.org/x/tools/go/ssa.(*subster).interface_(0xc0072878f0, 0xc000b4cbe0)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:268 +0x18e
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742518, 0xc000b4cbe0})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:138 +0x1012
golang.org/x/tools/go/ssa.(*subster).named(0xc0072878f0, 0xc0003498f0)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:344 +0x2c5
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742568, 0xc0003498f0})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:141 +0x10c5
golang.org/x/tools/go/ssa.(*subster).var_(0xc0072878f0, 0xc000a98240)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:213 +0x92
golang.org/x/tools/go/ssa.(*subster).varlist(0xc0072878f0, {0x101742658, 0xc000411740})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:197 +0xcf
golang.org/x/tools/go/ssa.(*subster).tuple(0xc0072878f0, 0xc000411740)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:159 +0x4b
golang.org/x/tools/go/ssa.(*subster).signature(0xc0072878f0, 0xc007741fc0)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:399 +0x105
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x1017425b8, 0xc007741fc0})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:132 +0xea8
golang.org/x/tools/go/ssa.(*subster).interface_(0xc0072878f0, 0xc000b4cc80)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:268 +0x18e
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742518, 0xc000b4cc80})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:138 +0x1012
golang.org/x/tools/go/ssa.(*subster).named(0xc0072878f0, 0xc000349880)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:344 +0x2c5
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742568, 0xc000349880})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:141 +0x10c5
golang.org/x/tools/go/ssa.(*subster).var_(0xc0072878f0, 0xc000a98420)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:213 +0x92
golang.org/x/tools/go/ssa.(*subster).varlist(0xc0072878f0, {0x101742658, 0xc000411788})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:197 +0xcf
golang.org/x/tools/go/ssa.(*subster).tuple(0xc0072878f0, 0xc000411788)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:159 +0x4b
golang.org/x/tools/go/ssa.(*subster).signature(0xc0072878f0, 0xc007741f80)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:399 +0x105
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x1017425b8, 0xc007741f80})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:132 +0xea8
golang.org/x/tools/go/ssa.(*subster).interface_(0xc0072878f0, 0xc000b4da40)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:268 +0x18e
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742518, 0xc000b4da40})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:138 +0x1012
golang.org/x/tools/go/ssa.(*subster).named(0xc0072878f0, 0xc0003497a0)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:344 +0x2c5
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742568, 0xc0003497a0})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:141 +0x10c5
golang.org/x/tools/go/ssa.(*subster).interface_(0xc0072878f0, 0xc000b4dbd0)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:286 +0x414
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742518, 0xc000b4dbd0})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:138 +0x1012
golang.org/x/tools/go/ssa.(*subster).named(0xc0072878f0, 0xc000349730)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:344 +0x2c5
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742568, 0xc000349730})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:141 +0x10c5
golang.org/x/tools/go/ssa.(*subster).var_(0xc0072878f0, 0xc000cdc6c0)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:213 +0x92
golang.org/x/tools/go/ssa.(*subster).varlist(0xc0072878f0, {0x101742658, 0xc0006ae948})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:197 +0xcf
golang.org/x/tools/go/ssa.(*subster).tuple(0xc0072878f0, 0xc0006ae948)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:159 +0x4b
golang.org/x/tools/go/ssa.(*subster).signature(0xc0072878f0, 0xc007741d00)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:399 +0x105
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x1017425b8, 0xc007741d00})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:132 +0xea8
golang.org/x/tools/go/ssa.(*subster).interface_(0xc0072878f0, 0xc000b4dc70)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:268 +0x18e
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742518, 0xc000b4dc70})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:138 +0x1012
golang.org/x/tools/go/ssa.(*subster).named(0xc0072878f0, 0xc0003496c0)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:344 +0x2c5
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742568, 0xc0003496c0})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:141 +0x10c5
golang.org/x/tools/go/ssa.(*subster).var_(0xc0072878f0, 0xc000cdcf00)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:213 +0x92
golang.org/x/tools/go/ssa.(*subster).varlist(0xc0072878f0, {0x101742658, 0xc0006aea08})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:197 +0xcf
golang.org/x/tools/go/ssa.(*subster).tuple(0xc0072878f0, 0xc0006aea08)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:159 +0x4b
golang.org/x/tools/go/ssa.(*subster).signature(0xc0072878f0, 0xc007741cc0)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:399 +0x105
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x1017425b8, 0xc007741cc0})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:132 +0xea8
golang.org/x/tools/go/ssa.(*subster).interface_(0xc0072878f0, 0xc000b4de00)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:268 +0x18e
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742518, 0xc000b4de00})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:138 +0x1012
golang.org/x/tools/go/ssa.(*subster).named(0xc0072878f0, 0xc000349260)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:344 +0x2c5
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742568, 0xc000349260})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:141 +0x10c5
golang.org/x/tools/go/ssa.(*subster).var_(0xc0072878f0, 0xc000cdd920)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:213 +0x92
golang.org/x/tools/go/ssa.(*subster).varlist(0xc0072878f0, {0x101742658, 0xc0006aeab0})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:197 +0xcf
golang.org/x/tools/go/ssa.(*subster).tuple(0xc0072878f0, 0xc0006aeab0)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:159 +0x4b
golang.org/x/tools/go/ssa.(*subster).signature(0xc0072878f0, 0xc007741680)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:399 +0x105
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x1017425b8, 0xc007741680})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:132 +0xea8
golang.org/x/tools/go/ssa.(*subster).interface_(0xc0072878f0, 0xc000b4dea0)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:268 +0x18e
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742518, 0xc000b4dea0})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:138 +0x1012
golang.org/x/tools/go/ssa.(*subster).named(0xc0072878f0, 0xc000349110)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:344 +0x2c5
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742568, 0xc000349110})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:141 +0x10c5
golang.org/x/tools/go/ssa.(*subster).var_(0xc0072878f0, 0xc000cddf20)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:213 +0x92
golang.org/x/tools/go/ssa.(*subster).varlist(0xc0072878f0, {0x101742658, 0xc0006aeb58})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:197 +0xcf
golang.org/x/tools/go/ssa.(*subster).tuple(0xc0072878f0, 0xc0006aeb58)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:159 +0x4b
golang.org/x/tools/go/ssa.(*subster).signature(0xc0072878f0, 0xc007741640)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:399 +0x105
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x1017425b8, 0xc007741640})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:132 +0xea8
golang.org/x/tools/go/ssa.(*subster).interface_(0xc0072878f0, 0xc000cee320)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:268 +0x18e
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742518, 0xc000cee320})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:138 +0x1012
golang.org/x/tools/go/ssa.(*subster).named(0xc0072878f0, 0xc0003490a0)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:344 +0x2c5
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742568, 0xc0003490a0})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:141 +0x10c5
golang.org/x/tools/go/ssa.(*subster).var_(0xc0072878f0, 0xc000d05320)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:213 +0x92
golang.org/x/tools/go/ssa.(*subster).varlist(0xc0072878f0, {0x1017433a0, 0xc0000c4750})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:197 +0xcf
golang.org/x/tools/go/ssa.(*subster).struct_(0xc0072878f0, 0xc0000c4750)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:181 +0x79
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742608, 0xc0000c4750})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:115 +0x9eb
golang.org/x/tools/go/ssa.(*subster).named(0xc0072878f0, 0xc000349030)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:344 +0x2c5
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742568, 0xc000349030})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:141 +0x10c5
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742590, 0xc000f5c750})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:106 +0x7c5
golang.org/x/tools/go/ssa.(*subster).var_(0xc0072878f0, 0xc000f98a20)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:213 +0x92
golang.org/x/tools/go/ssa.(*subster).varlist(0xc0072878f0, {0x1017433a0, 0xc0000c4840})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:197 +0xcf
golang.org/x/tools/go/ssa.(*subster).struct_(0xc0072878f0, 0xc0000c4840)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:181 +0x79
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742608, 0xc0000c4840})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:115 +0x9eb
golang.org/x/tools/go/ssa.(*subster).named(0xc0072878f0, 0xc000348e70)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:344 +0x2c5
golang.org/x/tools/go/ssa.(*subster).typ(0xc0072878f0, {0x101742568, 0xc000348e70})
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:141 +0x10c5
golang.org/x/tools/go/ssa.(*subster).var_(0xc0072878f0, 0xc000f98a80)
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/subst.go:213 +0x92
created by golang.org/x/tools/go/ssa.(*Program).Build
/Users/bytedance/go/pkg/mod/golang.org/x/tools@v0.11.0/go/ssa/builder.go:2439 +0x1c5
What did you expect to see?
the code runs successfully
Comment From: gabyhelp
Similar Issues
- x/tools/go/ssa: addNamedLocal panic: runtime error: invalid memory address or nil pointer dereference #58600
- x/tools/go/ssa: panic: cannot convert interface #62085
- x/tools/go/ssa: panic in ssa.(*Program).needMethods with type parameters #50078
- go/ssa: crash during SSA construction #9569
- x/tools/go/ssa: ssautil.Packages panics with the standard library #53604
- x/tools/go/ssa: panic: T #54274
- x/text/cmd/gotext: panic: interface conversion: types.Type is nil, not *types.Signature #51865
- x/tools/go/ssa: emitConv panic on generics #57272
- x/tools/go/ssa/ssautil: clarify that LoadAllSyntax is required, and provide better errors #28106
- x/tools/go/ssa: builder crash in map[*S]bool{{}: true} #13341
(Emoji vote if this was helpful or unhelpful; more detailed feedback welcome in this discussion.)
Comment From: guox33
the loaded package is "google.golang.org/protobuf/reflect/protoreflect"
it starts with struct EnumValueDescriptor
Comment From: timothy-king
The version of x/tools v0.11.0 (from the stack trace) is fairly out of date so you may want to try updating to see if this fixes the issue already.
I am not yet able to reproduce this with go1.20.5 (from the go env) with golang.org/x/tools v0.11.0 and google.golang.org/protobuf v1.34.2. What version of google.golang.org/protobuf/reflect/protoreflect are you analyzing?
Here is what I am doing to try to reproduce this:
# mkdir and cd into it
% cat go.mod
module example.com/x
go 1.20
require (
golang.org/x/tools v0.11.0
google.golang.org/protobuf v1.34.2
)
require (
golang.org/x/mod v0.12.0 // indirect
golang.org/x/sys v0.10.0 // indirect
)
% cat m.go
package main
import (
"log"
"golang.org/x/tools/go/packages"
"golang.org/x/tools/go/ssa"
"golang.org/x/tools/go/ssa/ssautil"
_ "google.golang.org/protobuf/reflect/protoreflect"
)
func main() {
fp := "."
cfg := &packages.Config{
Mode: packages.NeedSyntax | packages.NeedTypesInfo |
packages.NeedTypesSizes | packages.NeedTypes | packages.NeedImports |
packages.NeedName | packages.NeedFiles | packages.NeedCompiledGoFiles,
Dir: fp,
}
ps, err := packages.Load(cfg, "google.golang.org/protobuf/reflect/protoreflect")
if err != nil {
log.Fatal(err)
return
}
if en := packages.PrintErrors(ps); en > 0 {
for _, tp := range ps {
for _, e := range tp.Errors {
err = e
break
}
if err != nil {
log.Fatal(err)
break
}
}
return
}
prog, sps := ssautil.AllPackages(ps, ssa.InstantiateGenerics)
// p.ssaFs = prog.Fset
needAst := true /*conf.needAst*/
if needAst {
for _, sp := range sps {
sp.SetDebugMode(true)
}
}
prog.Build()
for _, pkg := range sps {
for k, m := range pkg.Members {
log.Println(pkg.String(), k, ":", m.String())
}
}
}
% go1.20.5 build
% ./x # Prints many many members so it is loading and building.
Can you give more details for how to reproduce the crash?
Comment From: guox33
The version of x/tools v0.11.0 (from the stack trace) is fairly out of date so you may want to try updating to see if this fixes the issue already.
I am not yet able to reproduce this with go1.20.5 (from the go env) with
golang.org/x/tools v0.11.0andgoogle.golang.org/protobuf v1.34.2. What version of google.golang.org/protobuf/reflect/protoreflect are you analyzing?Here is what I am doing to try to reproduce this:
```
mkdir and cd into it
% cat go.mod module example.com/x
go 1.20
require ( golang.org/x/tools v0.11.0 google.golang.org/protobuf v1.34.2 )
require ( golang.org/x/mod v0.12.0 // indirect golang.org/x/sys v0.10.0 // indirect ) % cat m.go package main
import ( "log"
"golang.org/x/tools/go/packages" "golang.org/x/tools/go/ssa" "golang.org/x/tools/go/ssa/ssautil" _ "google.golang.org/protobuf/reflect/protoreflect")
func main() { fp := "." cfg := &packages.Config{ Mode: packages.NeedSyntax | packages.NeedTypesInfo | packages.NeedTypesSizes | packages.NeedTypes | packages.NeedImports | packages.NeedName | packages.NeedFiles | packages.NeedCompiledGoFiles, Dir: fp, } ps, err := packages.Load(cfg, "google.golang.org/protobuf/reflect/protoreflect") if err != nil { log.Fatal(err) return } if en := packages.PrintErrors(ps); en > 0 { for , tp := range ps { for , e := range tp.Errors { err = e break } if err != nil { log.Fatal(err) break } } return } prog, sps := ssautil.AllPackages(ps, ssa.InstantiateGenerics) // p.ssaFs = prog.Fset needAst := true /conf.needAst/ if needAst { for _, sp := range sps { sp.SetDebugMode(true) } } prog.Build()
for _, pkg := range sps { for k, m := range pkg.Members { log.Println(pkg.String(), k, ":", m.String()) } }} % go1.20.5 build % ./x # Prints many many members so it is loading and building. ```
Can you give more details for how to reproduce the crash?
thanks for replying. the problem was solved after I updated x/tools to version v0.22.0 I can't neither reproduce this problem with your code, sorry that I can't provide you with the loaded repo, it's a company property. thanks again.
Comment From: guox33
solved by updating x/gools to the latest version