ondrajz / go-callvis

Visualize call graph of a Go program using Graphviz
https://ofabry.github.io/go-callvis
MIT License
5.82k stars 402 forks source link

Panic: T for a simple programme #154

Open RichardoC opened 1 year ago

RichardoC commented 1 year ago

This is a very cool project, but when I tried it on one of my side projects it failed with this obscure panic

Steps to reproduce exactly. Not all steps required but it's what I did

# Running inside a container for isolation
docker run --rm -it ubuntu:22.04

apt update && apt install -y golang

apt install -y ca-certificates

# project I want to visualise
git clone github.com/RichardoC/kube-audit-rest

cd kube-audit-rest

go run github.com/ofabry/go-callvis@latest .
root@d1d19aa8cd6b:/kube-audit-rest# go run github.com/ofabry/go-callvis@latest .
panic: T

goroutine 2499 [running]:
golang.org/x/tools/go/types/typeutil.Hasher.hashFor({0xa308e0?}, {0xb8b320?, 0xc012da9c20?})
    /root/go/pkg/mod/golang.org/x/tools@v0.0.0-20200305224536-de023d59a5d1/go/types/typeutil/map.go:302 +0x41f
golang.org/x/tools/go/types/typeutil.Hasher.Hash({0xe91ec0?}, {0xb8b320, 0xc012da9c20})
    /root/go/pkg/mod/golang.org/x/tools@v0.0.0-20200305224536-de023d59a5d1/go/types/typeutil/map.go:226 +0x65
golang.org/x/tools/go/types/typeutil.Hasher.hashFor({0xa308e0?}, {0xb8b258?, 0xc012ac7620?})
    /root/go/pkg/mod/golang.org/x/tools@v0.0.0-20200305224536-de023d59a5d1/go/types/typeutil/map.go:269 +0x3f2
golang.org/x/tools/go/types/typeutil.Hasher.Hash({0xc01215cf01?}, {0xb8b258, 0xc012ac7620})
    /root/go/pkg/mod/golang.org/x/tools@v0.0.0-20200305224536-de023d59a5d1/go/types/typeutil/map.go:226 +0x65
golang.org/x/tools/go/types/typeutil.Hasher.hashTuple({0xc00027bae8?}, 0xc012a91998)
    /root/go/pkg/mod/golang.org/x/tools@v0.0.0-20200305224536-de023d59a5d1/go/types/typeutil/map.go:310 +0x5f
golang.org/x/tools/go/types/typeutil.Hasher.hashFor({0xa308e0?}, {0xb8b280?, 0xc012dbc840?})
    /root/go/pkg/mod/golang.org/x/tools@v0.0.0-20200305224536-de023d59a5d1/go/types/typeutil/map.go:276 +0x10c
golang.org/x/tools/go/types/typeutil.Hasher.Hash({0x2?}, {0xb8b280, 0xc012dbc840})
    /root/go/pkg/mod/golang.org/x/tools@v0.0.0-20200305224536-de023d59a5d1/go/types/typeutil/map.go:226 +0x65
golang.org/x/tools/go/types/typeutil.(*Map).At(0xc0125d0058, {0xb8b280, 0xc012dbc840})
    /root/go/pkg/mod/golang.org/x/tools@v0.0.0-20200305224536-de023d59a5d1/go/types/typeutil/map.go:88 +0x48
golang.org/x/tools/go/ssa.(*Program).needMethods(0xc0125d0000, {0xb8b280?, 0xc012dbc840?}, 0x0)
    /root/go/pkg/mod/golang.org/x/tools@v0.0.0-20200305224536-de023d59a5d1/go/ssa/methods.go:156 +0x66
golang.org/x/tools/go/ssa.(*Program).needMethodsOf(0xc0125d0000, {0xb8b280?, 0xc012dbc840?})
    /root/go/pkg/mod/golang.org/x/tools@v0.0.0-20200305224536-de023d59a5d1/go/ssa/methods.go:145 +0x70
golang.org/x/tools/go/ssa.(*Package).build(0xc019364360)
    /root/go/pkg/mod/golang.org/x/tools@v0.0.0-20200305224536-de023d59a5d1/go/ssa/builder.go:2275 +0x111
sync.(*Once).doSlow(0xc0001b37b8?, 0x66bcde?)
    /usr/lib/go-1.18/src/sync/once.go:68 +0xc2
sync.(*Once).Do(...)
    /usr/lib/go-1.18/src/sync/once.go:59
golang.org/x/tools/go/ssa.(*Package).Build(...)
    /root/go/pkg/mod/golang.org/x/tools@v0.0.0-20200305224536-de023d59a5d1/go/ssa/builder.go:2263
golang.org/x/tools/go/ssa.(*Program).Build.func1(0x0?)
    /root/go/pkg/mod/golang.org/x/tools@v0.0.0-20200305224536-de023d59a5d1/go/ssa/builder.go:2247 +0x4c
created by golang.org/x/tools/go/ssa.(*Program).Build
    /root/go/pkg/mod/golang.org/x/tools@v0.0.0-20200305224536-de023d59a5d1/go/ssa/builder.go:2246 +0x19c
exit status 2

go version

go version go1.18.1 linux/amd64

hausliu commented 1 year ago

Updating golang.org/x/tools to the latest version can solve this problem, but you need to compile it yourself.