Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't run linter goanalysis_metalinter: goanalysis_metalinter: unused: package "main" (isInitialPkg: true, needAnalyzeSource: true): internal error: unhandled case *types.Struct #3592

Closed
4 tasks done
st6446 opened this issue Feb 15, 2023 · 3 comments
Labels
bug Something isn't working dependencies Relates to an upstream dependency

Comments

@st6446
Copy link

st6446 commented Feb 15, 2023

Welcome

  • Yes, I'm using a binary release within 2 latest major releases. Only such installations are supported.
  • Yes, I've searched similar issues on GitHub and didn't find any.
  • Yes, I've included all information below (version, config, etc.).
  • Yes, I've tried with the standalone linter if available (e.g., gocritic, go vet, etc.). (https://golangci-lint.run/usage/linters/)

Description of the problem

Bumping golangci-lint v1.51.1 from v.1.15.0, and execute golangci-lint. Then error happend.

full error log

olangci-lint run --timeout=5m
ERRO [runner] Panic: unused: package "main" (isInitialPkg: true, needAnalyzeSource: true): internal error: unhandled case *types.Struct: goroutine 13826 [running]:
runtime/debug.Stack()
        runtime/debug/stack.go:24 +0x65
github.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe.func1()
        github.com/golangci/golangci-lint/pkg/golinters/goanalysis/runner_action.go:102 +0x155
panic({0xf42840, 0xc00e441ed0})
        runtime/panic.go:884 +0x213
honnef.co/go/tools/analysis/lint.ExhaustiveTypeSwitch(...)
        honnef.co/go/tools@v0.4.0/analysis/lint/lint.go:234
honnef.co/go/tools/unused.(*graph).embeddedField(0xc0016df618, {0x131bcf0?, 0xc008bc8660?}, {0x132d4d8, 0xc008e00c60})
        honnef.co/go/tools@v0.4.0/unused/unused.go:1413 +0x534
honnef.co/go/tools/unused.(*graph).read(0xc0016df618, {0x131c0b0?, 0xc0084fd200?}, {0x132d4d8, 0xc008e00c60})
        honnef.co/go/tools@v0.4.0/unused/unused.go:822 +0x14ed
honnef.co/go/tools/unused.(*graph).read(0xc0016df618, {0x131c0b0?, 0xc0084fd218?}, {0x132d4d8, 0xc008e00cc0})
        honnef.co/go/tools@v0.4.0/unused/unused.go:831 +0x156f
honnef.co/go/tools/unused.(*graph).namedType(0xc0016df618, 0x131bb88?, {0x131f720?, 0xc0084fd230?})
        honnef.co/go/tools@v0.4.0/unused/unused.go:1516 +0x458
honnef.co/go/tools/unused.(*graph).decl(0xc0016df618, {0x131f360?, 0xc008bb1f80}, {0x0, 0x0})
        honnef.co/go/tools@v0.4.0/unused/unused.go:1099 +0xa72
honnef.co/go/tools/unused.(*graph).entry(0xc0016df618)
        honnef.co/go/tools@v0.4.0/unused/unused.go:518 +0xc28
honnef.co/go/tools/unused.run(0xc00d199770)
        honnef.co/go/tools@v0.4.0/unused/unused.go:219 +0x245
github.com/golangci/golangci-lint/pkg/golinters.runUnused(0xc00d199770)
        github.com/golangci/golangci-lint/pkg/golinters/unused.go:61 +0x48
github.com/golangci/golangci-lint/pkg/golinters.NewUnused.func1(0xf82d00?)
        github.com/golangci/golangci-lint/pkg/golinters/unused.go:31 +0x2f
github.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyze(0xc0015466e0)
        github.com/golangci/golangci-lint/pkg/golinters/goanalysis/runner_action.go:188 +0x9df
github.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe.func2()
        github.com/golangci/golangci-lint/pkg/golinters/goanalysis/runner_action.go:106 +0x1d
github.com/golangci/golangci-lint/pkg/timeutils.(*Stopwatch).TrackStage(0xc00064f6d0, {0x10ccb49, 0x6}, 0xc00a96b748)
        github.com/golangci/golangci-lint/pkg/timeutils/stopwatch.go:111 +0x4a
github.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe(0xc008eec740?)
        github.com/golangci/golangci-lint/pkg/golinters/goanalysis/runner_action.go:105 +0x85
github.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*loadingPackage).analyze.func2(0xc0015466e0)
        github.com/golangci/golangci-lint/pkg/golinters/goanalysis/runner_loadingpackage.go:80 +0xb4
created by github.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*loadingPackage).analyze
        github.com/golangci/golangci-lint/pkg/golinters/goanalysis/runner_loadingpackage.go:75 +0x1eb 
WARN [runner] Can't run linter goanalysis_metalinter: goanalysis_metalinter: unused: package "main" (isInitialPkg: true, needAnalyzeSource: true): internal error: unhandled case *types.Struct 
ERRO Running error: 1 error occurred:
        * can't run linter goanalysis_metalinter: goanalysis_metalinter: unused: package "main" (isInitialPkg: true, needAnalyzeSource: true): internal error: unhandled case *types.Struct

Version of golangci-lint

$ golangci-lint --version
# Paste output here
golangci-lint has version 1.51.1 built from b87d2c19 on 2023-02-05T13:06:33Z

Configuration file

$ cat .golangci.yml
# paste output here
linters:
  enable:
    - stylecheck
    - nakedret
    - errorlint
    - exhaustive

Go environment

$ go version && go env
# paste output here
go version go1.20 linux/amd64
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/username/.cache/go-build"
GOENV="/home/username/.config/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/home/username/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/username/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.20"
GCCGO="gccgo"
GOAMD64="v1"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="0"
GOMOD="/username/some/project/go.mod"
GOWORK=""
CGO_CFLAGS="-O2 -g"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-O2 -g"
CGO_FFLAGS="-O2 -g"
CGO_LDFLAGS="-O2 -g"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -Wl,--no-gc-sections -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build1706252246=/tmp/go-build -gno-record-gcc-switches"

Verbose output of running

$ golangci-lint cache clean
$ golangci-lint run -v
# paste output here
INFO [config_reader] Config search paths: [./ /quipper/monorepo/shinkobetsu /quipper/monorepo /quipper / /home/quipper] 
INFO [config_reader] Used config file .golangci.yml 
INFO [lintersdb] Active 11 linters: [errcheck errorlint exhaustive gosimple govet ineffassign nakedret staticcheck stylecheck typecheck unused] 
INFO [loader] Go packages loading at mode 575 (exports_file|files|imports|types_sizes|compiled_files|deps|name) took 331.667469ms 
INFO [runner/filename_unadjuster] Pre-built 0 adjustments in 39.433136ms 
INFO [linters_context/goanalysis] analyzers took 1m3.942709123s with top 10 stages: buildir: 36.436634552s, exhaustive: 12.880620466s, inspect: 1.533070144s, fact_deprecated: 1.109119948s, unused: 1.092464815s, S1038: 1.029685396s, printf: 967.401536ms, ctrlflow: 839.557041ms, errorlint: 713.089538ms, fact_purity: 684.527637ms 
ERRO [runner] Panic: unused: package "main" (isInitialPkg: true, needAnalyzeSource: true): internal error: unhandled case *types.Struct: goroutine 12323 [running]:
runtime/debug.Stack()
        runtime/debug/stack.go:24 +0x65
github.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe.func1()
        github.com/golangci/golangci-lint/pkg/golinters/goanalysis/runner_action.go:102 +0x155
panic({0xf42840, 0xc0026ed320})
        runtime/panic.go:884 +0x213
honnef.co/go/tools/analysis/lint.ExhaustiveTypeSwitch(...)
        honnef.co/go/tools@v0.4.0/analysis/lint/lint.go:234
honnef.co/go/tools/unused.(*graph).embeddedField(0xc000eaf618, {0x131bcf0?, 0xc01260b320?}, {0x132d4d8, 0xc014392240})
        honnef.co/go/tools@v0.4.0/unused/unused.go:1413 +0x534
honnef.co/go/tools/unused.(*graph).read(0xc000eaf618, {0x131c0b0?, 0xc013612d98?}, {0x132d4d8, 0xc014392240})
        honnef.co/go/tools@v0.4.0/unused/unused.go:822 +0x14ed
honnef.co/go/tools/unused.(*graph).read(0xc000eaf618, {0x131c0b0?, 0xc013612db0?}, {0x132d4d8, 0xc0143922a0})
        honnef.co/go/tools@v0.4.0/unused/unused.go:831 +0x156f
honnef.co/go/tools/unused.(*graph).namedType(0xc000eaf618, 0x131bb88?, {0x131f720?, 0xc013612dc8?})
        honnef.co/go/tools@v0.4.0/unused/unused.go:1516 +0x458
honnef.co/go/tools/unused.(*graph).decl(0xc000eaf618, {0x131f360?, 0xc002a79240}, {0x0, 0x0})
        honnef.co/go/tools@v0.4.0/unused/unused.go:1099 +0xa72
honnef.co/go/tools/unused.(*graph).entry(0xc000eaf618)
        honnef.co/go/tools@v0.4.0/unused/unused.go:518 +0xc28
honnef.co/go/tools/unused.run(0xc01b0b4780)
        honnef.co/go/tools@v0.4.0/unused/unused.go:219 +0x245
github.com/golangci/golangci-lint/pkg/golinters.runUnused(0xc01b0b4780)
        github.com/golangci/golangci-lint/pkg/golinters/unused.go:61 +0x48
github.com/golangci/golangci-lint/pkg/golinters.NewUnused.func1(0xf82d00?)
        github.com/golangci/golangci-lint/pkg/golinters/unused.go:31 +0x2f
github.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyze(0xc001c486e0)
        github.com/golangci/golangci-lint/pkg/golinters/goanalysis/runner_action.go:188 +0x9df
github.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe.func2()
        github.com/golangci/golangci-lint/pkg/golinters/goanalysis/runner_action.go:106 +0x1d
github.com/golangci/golangci-lint/pkg/timeutils.(*Stopwatch).TrackStage(0xc001a1e4b0, {0x10ccb49, 0x6}, 0xc001631f48)
        github.com/golangci/golangci-lint/pkg/timeutils/stopwatch.go:111 +0x4a
github.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe(0xc001522900?)
        github.com/golangci/golangci-lint/pkg/golinters/goanalysis/runner_action.go:105 +0x85
github.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*loadingPackage).analyze.func2(0xc001c486e0)
        github.com/golangci/golangci-lint/pkg/golinters/goanalysis/runner_loadingpackage.go:80 +0xb4
created by github.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*loadingPackage).analyze
        github.com/golangci/golangci-lint/pkg/golinters/goanalysis/runner_loadingpackage.go:75 +0x1eb 
WARN [runner] Can't run linter goanalysis_metalinter: goanalysis_metalinter: unused: package "main" (isInitialPkg: true, needAnalyzeSource: true): internal error: unhandled case *types.Struct 
INFO [runner] processing took 4.7µs with stages: max_same_issues: 967ns, nolint: 777ns, skip_dirs: 407ns, cgo: 376ns, autogenerated_exclude: 244ns, max_from_linter: 244ns, path_prettifier: 166ns, skip_files: 155ns, exclude-rules: 146ns, max_per_file_from_linter: 142ns, uniq_by_line: 139ns, identifier_marker: 138ns, filename_unadjuster: 137ns, path_prefixer: 137ns, exclude: 128ns, source_code: 127ns, sort_results: 77ns, diff: 66ns, path_shortener: 66ns, severity-rules: 61ns 
INFO [runner] linters took 15.370975738s with stages: goanalysis_metalinter: 15.37091864s 
ERRO Running error: 1 error occurred:
        * can't run linter goanalysis_metalinter: goanalysis_metalinter: unused: package "main" (isInitialPkg: true, needAnalyzeSource: true): internal error: unhandled case *types.Struct
 
INFO Memory: 156 samples, avg is 445.9MB, max is 607.4MB 
INFO Execution took 15.748046257s 

Code example or link to a public repository

// add your code here
@st6446 st6446 added the bug Something isn't working label Feb 15, 2023
@boring-cyborg
Copy link

boring-cyborg bot commented Feb 15, 2023

Hey, thank you for opening your first Issue ! 🙂 If you would like to contribute we have a guide for contributors.

@ldez
Copy link
Member

ldez commented Feb 15, 2023

Hello,

can you provide a minimal reproducible example?

You have checked the following box:

[x] Yes, I've tried with the standalone linter if available (e.g., gocritic, go vet, etc.). (https://golangci-lint.run/usage/linters/)

unused is related to staticcheck, can you give me the output of the run of the standalone binary of staticcheck? (golangci-lint v1.51.1 uses honnef.co/go/tools@v0.4.0)

https://github.com/golangci/golangci-lint/blob/v1.51.1/go.mod#L115

I think the problem is already fixed by #3591 but you have to check.

@ldez ldez added dependencies Relates to an upstream dependency feedback required Requires additional feedback labels Feb 15, 2023
@deefdragon
Copy link

This is indeed a staticcheck issue, reported here dominikh/go-tools#1361

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working dependencies Relates to an upstream dependency
Projects
None yet
Development

No branches or pull requests

3 participants