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

x/tools/gopls: InlayHint: nil panic due to ast.CallExpr.Fun with no type #67142

Closed
hyangah opened this issue May 2, 2024 · 4 comments
Closed
Assignees
Labels
automatedReport gopls Issues related to the Go language server, gopls. Tools This label describes issues relating to any tools in the x/tools repository.
Milestone

Comments

@hyangah
Copy link
Contributor

hyangah commented May 2, 2024

gopls version: (devel)/go1.22.2 74c9cfe4d22faa696baabeea02df6493b15e8c79 (dev version built today)
gopls flags: -rpc.trace
update flags: proxy
extension version: 0.41.4
environment: Visual Studio Code darwin
initialization error: undefined
issue timestamp: Thu, 02 May 2024 16:39:32 GMT
restart history:
Thu, 02 May 2024 16:39:28 GMT: activation (enabled: true)

ATTENTION: PLEASE PROVIDE THE DETAILS REQUESTED BELOW.

Describe what you observed.

Opened the folder with the following files. (local go version: 1.21.9, gopls built with go1.22.2)

--- go.mod ---
module w

go 1.21.9

--- main.go ---
package main

func main() {
	_ = rand.Float64()
}
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0xf482982]

goroutine 110 [running]:
golang.org/x/tools/internal/typeparams.CoreType({0x0%3F, 0x0%3F})
	  coretype.go:18  0x22
golang.org/x/tools/gopls/internal/golang.parameterNames({0xfec8748%3F, 0xc0000562c0}, 0xc0002f0f00, 0xc0002f0ea0, 0xc1850e510a723990%3F, 0x2219fe36%3F)
	  inlay_hint.go:142  0x6a
golang.org/x/tools/gopls/internal/golang.InlayHint.func1({0xfec8748, 0xc0000562c0})
	  inlay_hint.go:130  0x152
go/ast.inspector.Visit(0xc000190a50, {0xfec8748%3F, 0xc0000562c0%3F})
	  walk.go:386  0x2b
go/ast.Walk({0xfec4fc0%3F, 0xc000190a50%3F}, {0xfec8748, 0xc0000562c0})
	  walk.go:51  0x4c
go/ast.walkExprList(...)
	  walk.go:26
go/ast.Walk({0xfec4fc0%3F, 0xc000190a50%3F}, {0xfec89f0, 0xc000056300})
	  walk.go:217  0x3077
go/ast.walkStmtList(...)
	  walk.go:32
go/ast.Walk({0xfec4fc0%3F, 0xc000190a50%3F}, {0xfec8608, 0xc000307ef0})
	  walk.go:234  0x31b7
go/ast.Walk({0xfec4fc0%3F, 0xc000190a50%3F}, {0xfec8450, 0xc000307f20})
	  walk.go:357  0xfa5
go/ast.walkDeclList(...)
	  walk.go:38
go/ast.Walk({0xfec4fc0%3F, 0xc000190a50%3F}, {0xfec8388, 0xc0005094a0})
	  walk.go:366  0x36c5
go/ast.Inspect(...)
	  walk.go:397
golang.org/x/tools/gopls/internal/golang.InlayHint({0xfecd208%3F, 0xc00067c3c0%3F}, 0xc0005407e0, {0xfecff20, 0xc0007804e0}, {{0x16%3F, 0x0%3F}, {0x4dc028%3F, 0xc0%3F}})
	  inlay_hint.go:124  0x598
golang.org/x/tools/gopls/internal/server.(*server).InlayHint(0xc000212780, {0xfecd240, 0xc000406500}, 0xc00067c0f0)
	  inlay_hint.go:32  0x337
golang.org/x/tools/gopls/internal/protocol.serverDispatch({0xfecd240, 0xc000406500}, {0xfee7540, 0xc000212780}, 0xc00067c0c0, {0xfecd400, 0xc000402340})
	  tsserver.go:453  0x1efa
golang.org/x/tools/gopls/internal/lsprpc.(*streamServer).ServeStream.ServerHandler.func3({0xfecd240, 0xc000406500}, 0xc00067c0c0, {0xfecd400, 0xc000402340})
	  protocol.go:160  0x85
golang.org/x/tools/gopls/internal/lsprpc.(*streamServer).ServeStream.handshaker.func4({0xfecd240, 0xc000406500}, 0xc00067c0c0, {0xfecd400, 0xc000402340})
	  lsprpc.go:509  0x923
golang.org/x/tools/gopls/internal/protocol.Handlers.MustReplyHandler.func1({0xfecd240, 0xc000406500}, 0xc0001a6870, {0xfecd400, 0xc000402340})
	  handler.go:35  0xc6
golang.org/x/tools/gopls/internal/protocol.Handlers.AsyncHandler.func2.2()
	  handler.go:103  0x96
created by golang.org/x/tools/gopls/internal/protocol.Handlers.AsyncHandler.func2 in goroutine 120
	  handler.go:100  0x1c5
gopls stats -anon { "DirStats": { "Files": 2, "TestdataFiles": 0, "GoFiles": 1, "ModFiles": 1, "Dirs": 1 }, "GOARCH": "amd64", "GOOS": "darwin", "GOPACKAGESDRIVER": "", "GOPLSCACHE": "", "GoVersion": "go1.22.2", "GoplsVersion": "(devel)", "InitialWorkspaceLoadDuration": "272.497863ms", "MemStats": { "HeapAlloc": 2338064, "HeapInUse": 4390912, "TotalAlloc": 6797184 }, "WorkspaceStats": { "Files": { "Total": 2, "Largest": 51, "Errs": 0 }, "Views": [ { "GoCommandVersion": "go1.21.9", "AllPackages": { "Packages": 1, "LargestPackage": 1, "CompiledGoFiles": 1, "Modules": 1 }, "WorkspacePackages": { "Packages": 1, "LargestPackage": 1, "CompiledGoFiles": 1, "Modules": 1 }, "Diagnostics": 1 } ] } }

OPTIONAL: If you would like to share more information, you can attach your complete gopls logs.

NOTE: THESE MAY CONTAIN SENSITIVE INFORMATION ABOUT YOUR CODEBASE.
DO NOT SHARE LOGS IF YOU ARE WORKING IN A PRIVATE REPOSITORY.

<OPTIONAL: ATTACH LOGS HERE>

@hyangah
Copy link
Contributor Author

hyangah commented May 2, 2024

Obviously I use inlay hints.

    "go.inlayHints.assignVariableTypes": true,
    "go.inlayHints.compositeLiteralFields": true,
    "go.inlayHints.compositeLiteralTypes": true,
    "go.inlayHints.constantValues": true,
    "go.inlayHints.functionTypeParameters": true,
    "go.inlayHints.parameterNames": true,
    "go.inlayHints.rangeVariableTypes": true,

@hyangah hyangah transferred this issue from golang/vscode-go May 2, 2024
@gopherbot gopherbot added the gopls Issues related to the Go language server, gopls. label May 2, 2024
@hyangah hyangah changed the title gopls: automated issue report (crash) x/tools/gopls: nil pointer dereference in internal/typeparams.CoreType (crash) May 2, 2024
@gopherbot gopherbot added the Tools This label describes issues relating to any tools in the x/tools repository. label May 2, 2024
@gopherbot gopherbot added this to the Unreleased milestone May 2, 2024
@findleyr
Copy link
Contributor

findleyr commented May 2, 2024

CC @timothy-king @adonovan

@adonovan adonovan changed the title x/tools/gopls: nil pointer dereference in internal/typeparams.CoreType (crash) x/tools/gopls: InlayHint: nil panic due to ast.CallExpr.Fun with no type May 2, 2024
@adonovan adonovan self-assigned this May 2, 2024
@adonovan
Copy link
Member

adonovan commented May 2, 2024

Thanks for the very helpful report with minimized test case.

@gopherbot
Copy link

Change https://go.dev/cl/582957 mentions this issue: gopls/internal/golang: fix nil panic in InlayHint

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
automatedReport gopls Issues related to the Go language server, gopls. Tools This label describes issues relating to any tools in the x/tools repository.
Projects
None yet
Development

No branches or pull requests

4 participants