Skip to content

panic during analysis #5092

@harrisa1

Description

@harrisa1

Welcome

  • Yes, I'm using a binary release within 2 latest releases. Only such installations are supported.
  • Yes, I've searched similar issues on GitHub and didn't find any.
  • Yes, I've read the typecheck section of the FAQ.
  • Yes, I've tried with the standalone linter if available (e.g., gocritic, go vet, etc.).
  • I agree to follow this project's Code of Conduct

Description of the problem

Running golangci-lint run -v --timeout=5m --tests=false --max-issues-per-linter=0 --max-same-issues=0 --disable staticcheck using go1.23.2 on alpine linux fails with

[linters_context/goanalysis] buildir: panic during analysis: Cannot range over: func(yield func(K, V) bool), goroutine 5095 [running]:
runtime/debug.Stack()
	/usr/local/go/src/runtime/debug/stack.go:26 +0x5e
github.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe.func1()
	/go/pkg/mod/github.com/golangci/golangci-lint@v1.52.2/pkg/golinters/goanalysis/runner_action.go:105 +0x5a
...

Version of golangci-lint

$ golangci-lint --version
# Paste output here
golangci-lint has version v1.60.1 built with go1.23.2 from (unknown, modified: ?, mod sum: "h1:DRKNqNTQRLBJZ1il5u4fvgLQCjQc7QFs0DbhksJtVJE=") on (unknown)

I have also tried with the latest v1.61.0

Configuration

Go environment

go version go1.23.2 linux/amd64

GO111MODULE=''
GOARCH='amd64'
GOBIN='/mnt/c/builds/.go/bin'
GOCACHE='/home/andrew/.cache/go-build'
GOENV='/home/andrew/.config/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='amd64'
GOHOSTOS='linux'
GOINSECURE=''
GOMODCACHE='<private info>'
GONOPROXY='<private info>'
GONOSUMDB='<private info>'
GOOS='linux'
GOPATH='/mnt/c/builds/.go'
GOPRIVATE='bitbucket.org/inindca/*'
GOPROXY='<private info>https://proxy.golang.org|direct'
GOROOT='/usr/local/go'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/usr/local/go/pkg/tool/linux_amd64'
GOVCS=''
GOVERSION='go1.23.2'
GODEBUG=''
GOTELEMETRY='local'
GOTELEMETRYDIR='/home/andrew/.config/go/telemetry'
GCCGO='gccgo'
GOAMD64='v1'
AR='ar'
CC='gcc'
CXX='g++'
CGO_ENABLED='1'
GOMOD='<private info>'
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 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build3096209031=/tmp/go-build -gno-record-gcc-switches'

Verbose output of running

16:12:59  level=info msg="[config_reader] Config search paths: [./ /var/build/build-purescale-apiconscript/master-1938 /var/build/build-purescale-apiconscript /var/build /var /]"
16:12:59  level=info msg="[lintersdb] Active 6 linters: [errcheck gosimple govet ineffassign typecheck unused]"
16:13:01  level=info msg="[loader] Go packages loading at mode 575 (name|imports|types_sizes|compiled_files|deps|exports_file|files) took 2.467707586s"
16:13:01  level=info msg="[runner/filename_unadjuster] Pre-built 0 adjustments in 61.952196ms"
16:13:07  level=error msg="[linters_context/goanalysis] buildir: panic during analysis: Cannot range over: func(yield func(K, V) bool), goroutine 5079 [running]:\nruntime/debug.Stack()\n\t/usr/local/go/src/runtime/debug/stack.go:26 +0x5e\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe.func1()\n\t/go/pkg/mod/github.com/golangci/golangci-lint@v1.52.2/pkg/golinters/goanalysis/runner_action.go:105 +0x5a\npanic({0xf93c00?, 0xc009805230?})\n\t/usr/local/go/src/runtime/panic.go:785 +0x132\nhonnef.co/go/tools/go/ir.(*builder).rangeStmt(0xc0064ad968, 0xc00c969b80, 0xc00aff6d80, 0x0, {0x13a0c28, 0xc00aff6d80})\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2181 +0x894\nhonnef.co/go/tools/go/ir.(*builder).stmt(0xc0064ad968, 0xc00c969b80, {0x13a5790?, 0xc00aff6d80?})\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2394 +0x20a\nhonnef.co/go/tools/go/ir.(*builder).stmtList(...)\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:847\nhonnef.co/go/tools/go/ir.(*builder).stmt(0xc0064ad968, 0xc00c969b80, {0x13a5610?, 0xc0065b8600?})\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2352 +0x1415\nhonnef.co/go/tools/go/ir.(*builder).buildFunction(0xc0064ad968, 0xc00c969b80)\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2464 +0x417\nhonnef.co/go/tools/go/ir.(*builder).buildFuncDecl(0xc0064ad968, 0xc00997e510, 0xc0065b8660)\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2501 +0x189\nhonnef.co/go/tools/go/ir.(*Package).build(0xc00997e510)\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2605 +0xb46\nsync.(*Once).doSlow(0xc009377ea0?, 0xc00aff7380?)\n\t/usr/local/go/src/sync/once.go:76 +0xb4\nsync.(*Once).Do(...)\n\t/usr/local/go/src/sync/once.go:67\nhonnef.co/go/tools/go/ir.(*Package).Build(...)\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2523\nhonnef.co/go/tools/internal/passes/buildir.run(0xc005e773b0)\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/internal/passes/buildir/buildir.go:86 +0x18b\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyze(0xc001259480)\n\t/go/pkg/mod/github.com/golangci/golangci-lint@v1.52.2/pkg/golinters/goanalysis/runner_action.go:195 +0x967\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe.func2()\n\t/go/pkg/mod/github.com/golangci/golangci-lint@v1.52.2/pkg/golinters/goanalysis/runner_action.go:113 +0x17\ngithub.com/golangci/golangci-lint/pkg/timeutils.(*Stopwatch).TrackStage(0xc00023d450, {0x11401e3, 0x7}, 0xc0013e8f48)\n\t/go/pkg/mod/github.com/golangci/golangci-lint@v1.52.2/pkg/timeutils/stopwatch.go:111 +0x44\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe(0xc0008a7500?)\n\t/go/pkg/mod/github.com/golangci/golangci-lint@v1.52.2/pkg/golinters/goanalysis/runner_action.go:112 +0x6e\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*loadingPackage).analyze.func2(0xc001259480)\n\t/go/pkg/mod/github.com/golangci/golangci-lint@v1.52.2/pkg/golinters/goanalysis/runner_loadingpackage.go:80 +0xa5\ncreated by github.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*loadingPackage).analyze in goroutine 457\n\t/go/pkg/mod/github.com/golangci/golangci-lint@v1.52.2/pkg/golinters/goanalysis/runner_loadingpackage.go:75 +0x1e9\n"
16:13:07  level=error msg="[linters_context/goanalysis] buildir: panic during analysis: Cannot range over: func(yield func(E) bool), goroutine 5064 [running]:\nruntime/debug.Stack()\n\t/usr/local/go/src/runtime/debug/stack.go:26 +0x5e\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe.func1()\n\t/go/pkg/mod/github.com/golangci/golangci-lint@v1.52.2/pkg/golinters/goanalysis/runner_action.go:105 +0x5a\npanic({0xf93c00?, 0xc00a1cd110?})\n\t/usr/local/go/src/runtime/panic.go:785 +0x132\nhonnef.co/go/tools/go/ir.(*builder).rangeStmt(0xc000eeb968, 0xc00d5a7b80, 0xc00ca8e060, 0x0, {0x13a0c28, 0xc00ca8e060})\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2181 +0x894\nhonnef.co/go/tools/go/ir.(*builder).stmt(0xc000eeb968, 0xc00d5a7b80, {0x13a5790?, 0xc00ca8e060?})\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2394 +0x20a\nhonnef.co/go/tools/go/ir.(*builder).stmtList(...)\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:847\nhonnef.co/go/tools/go/ir.(*builder).stmt(0xc000eeb968, 0xc00d5a7b80, {0x13a5610?, 0xc00917c4e0?})\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2352 +0x1415\nhonnef.co/go/tools/go/ir.(*builder).buildFunction(0xc000eeb968, 0xc00d5a7b80)\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2464 +0x417\nhonnef.co/go/tools/go/ir.(*builder).buildFuncDecl(0xc000eeb968, 0xc00aa97dd0, 0xc00917c510)\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2501 +0x189\nhonnef.co/go/tools/go/ir.(*Package).build(0xc00aa97dd0)\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2605 +0xb46\nsync.(*Once).doSlow(0xc00c9a48c0?, 0xc00ca9b320?)\n\t/usr/local/go/src/sync/once.go:76 +0xb4\nsync.(*Once).Do(...)\n\t/usr/local/go/src/sync/once.go:67\nhonnef.co/go/tools/go/ir.(*Package).Build(...)\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2523\nhonnef.co/go/tools/internal/passes/buildir.run(0xc00a1c0000)\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/internal/passes/buildir/buildir.go:86 +0x18b\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyze(0xc0012553d0)\n\t/go/pkg/mod/github.com/golangci/golangci-lint@v1.52.2/pkg/golinters/goanalysis/runner_action.go:195 +0x967\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe.func2()\n\t/go/pkg/mod/github.com/golangci/golangci-lint@v1.52.2/pkg/golinters/goanalysis/runner_action.go:113 +0x17\ngithub.com/golangci/golangci-lint/pkg/timeutils.(*Stopwatch).TrackStage(0xc00023d450, {0x11401e3, 0x7}, 0xc00042c748)\n\t/go/pkg/mod/github.com/golangci/golangci-lint@v1.52.2/pkg/timeutils/stopwatch.go:111 +0x44\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe(0xc0008dc480?)\n\t/go/pkg/mod/github.com/golangci/golangci-lint@v1.52.2/pkg/golinters/goanalysis/runner_action.go:112 +0x6e\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*loadingPackage).analyze.func2(0xc0012553d0)\n\t/go/pkg/mod/github.com/golangci/golangci-lint@v1.52.2/pkg/golinters/goanalysis/runner_loadingpackage.go:80 +0xa5\ncreated by github.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*loadingPackage).analyze in goroutine 142\n\t/go/pkg/mod/github.com/golangci/golangci-lint@v1.52.2/pkg/golinters/goanalysis/runner_loadingpackage.go:75 +0x1e9\n"
16:13:19  level=info msg="[linters_context/goanalysis] analyzers took 10.91121069s with top 10 stages: buildir: 5.767393099s, printf: 1.722034344s, ctrlflow: 1.6379284s, inspect: 1.272151741s, fact_purity: 351.344527ms, S1038: 22.964301ms, S1039: 20.505695ms, bools: 16.094347ms, errorsas: 16.06442ms, S1035: 16.041157ms"
16:13:19  level=error msg="[runner] Panic: buildir: package \"slices\" (isInitialPkg: false, needAnalyzeSource: true): Cannot range over: func(yield func(E) bool): goroutine 5064 [running]:\nruntime/debug.Stack()\n\t/usr/local/go/src/runtime/debug/stack.go:26 +0x5e\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe.func1()\n\t/go/pkg/mod/github.com/golangci/golangci-lint@v1.52.2/pkg/golinters/goanalysis/runner_action.go:109 +0x277\npanic({0xf93c00?, 0xc00a1cd110?})\n\t/usr/local/go/src/runtime/panic.go:785 +0x132\nhonnef.co/go/tools/go/ir.(*builder).rangeStmt(0xc000eeb968, 0xc00d5a7b80, 0xc00ca8e060, 0x0, {0x13a0c28, 0xc00ca8e060})\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2181 +0x894\nhonnef.co/go/tools/go/ir.(*builder).stmt(0xc000eeb968, 0xc00d5a7b80, {0x13a5790?, 0xc00ca8e060?})\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2394 +0x20a\nhonnef.co/go/tools/go/ir.(*builder).stmtList(...)\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:847\nhonnef.co/go/tools/go/ir.(*builder).stmt(0xc000eeb968, 0xc00d5a7b80, {0x13a5610?, 0xc00917c4e0?})\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2352 +0x1415\nhonnef.co/go/tools/go/ir.(*builder).buildFunction(0xc000eeb968, 0xc00d5a7b80)\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2464 +0x417\nhonnef.co/go/tools/go/ir.(*builder).buildFuncDecl(0xc000eeb968, 0xc00aa97dd0, 0xc00917c510)\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2501 +0x189\nhonnef.co/go/tools/go/ir.(*Package).build(0xc00aa97dd0)\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2605 +0xb46\nsync.(*Once).doSlow(0xc00c9a48c0?, 0xc00ca9b320?)\n\t/usr/local/go/src/sync/once.go:76 +0xb4\nsync.(*Once).Do(...)\n\t/usr/local/go/src/sync/once.go:67\nhonnef.co/go/tools/go/ir.(*Package).Build(...)\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/go/ir/builder.go:2523\nhonnef.co/go/tools/internal/passes/buildir.run(0xc00a1c0000)\n\t/go/pkg/mod/honnef.co/go/tools@v0.4.3/internal/passes/buildir/buildir.go:86 +0x18b\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyze(0xc0012553d0)\n\t/go/pkg/mod/github.com/golangci/golangci-lint@v1.52.2/pkg/golinters/goanalysis/runner_action.go:195 +0x967\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe.func2()\n\t/go/pkg/mod/github.com/golangci/golangci-lint@v1.52.2/pkg/golinters/goanalysis/runner_action.go:113 +0x17\ngithub.com/golangci/golangci-lint/pkg/timeutils.(*Stopwatch).TrackStage(0xc00023d450, {0x11401e3, 0x7}, 0xc00042c748)\n\t/go/pkg/mod/github.com/golangci/golangci-lint@v1.52.2/pkg/timeutils/stopwatch.go:111 +0x44\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*action).analyzeSafe(0xc0008dc480?)\n\t/go/pkg/mod/github.com/golangci/golangci-lint@v1.52.2/pkg/golinters/goanalysis/runner_action.go:112 +0x6e\ngithub.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*loadingPackage).analyze.func2(0xc0012553d0)\n\t/go/pkg/mod/github.com/golangci/golangci-lint@v1.52.2/pkg/golinters/goanalysis/runner_loadingpackage.go:80 +0xa5\ncreated by github.com/golangci/golangci-lint/pkg/golinters/goanalysis.(*loadingPackage).analyze in goroutine 142\n\t/go/pkg/mod/github.com/golangci/golangci-lint@v1.52.2/pkg/golinters/goanalysis/runner_loadingpackage.go:75 +0x1e9\n"
16:13:19  level=warning msg="[runner] Can't run linter goanalysis_metalinter: goanalysis_metalinter: buildir: package \"slices\" (isInitialPkg: false, needAnalyzeSource: true): Cannot range over: func(yield func(E) bool)"
16:13:19  level=info msg="[runner] processing took 3.158µs with stages: skip_dirs: 397ns, max_same_issues: 378ns, nolint: 338ns, max_from_linter: 220ns, cgo: 175ns, autogenerated_exclude: 160ns, exclude-rules: 159ns, identifier_marker: 150ns, filename_unadjuster: 149ns, skip_files: 146ns, source_code: 145ns, path_prettifier: 130ns, exclude: 78ns, path_shortener: 77ns, diff: 72ns, sort_results: 70ns, fixer: 68ns, severity-rules: 67ns, max_per_file_from_linter: 62ns, uniq_by_line: 60ns, path_prefixer: 57ns"
16:13:19  level=info msg="[runner] linters took 15.937283496s with stages: goanalysis_metalinter: 15.937235644s"
16:13:19  level=error msg="Running error: 1 error occurred:\n\t* can't run linter goanalysis_metalinter: goanalysis_metalinter: buildir: package \"slices\" (isInitialPkg: false, needAnalyzeSource: true): Cannot range over: func(yield func(E) bool)\n\n"
16:13:19  level=info msg="Memory: 186 samples, avg is 203.1MB, max is 438.6MB"
16:13:19  level=info msg="Execution took 18.483158s"

A minimal reproducible example or link to a public repository

Unfortunately, I can only reproduce this running a docker container using alpine linux on our companies private jenkins servers.

Validation

  • Yes, I've included all information above (version, config, etc.).

Supporter

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions