From 2350fe8b0e6a14a9290cb44a12c29019d713a899 Mon Sep 17 00:00:00 2001 From: Rob Findley Date: Mon, 14 Sep 2020 08:58:40 -0400 Subject: [PATCH] internal/lsp/source: fix panic in addFieldItems I have no idea what I did to trigger this, but I got a panic in this codepath. Since this is for completion, it should be OK to simply make this code defensive, without fully understanding the cause. Here's the panic: panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0xc570f3] goroutine 5914644 [running]: golang.org/x/tools/internal/lsp/source/completion.(*completer).addFieldItems(0xc0996ee240, 0x1032020, 0xc0dd21e2a0, 0xc0b99b26f0) /usr/local/google/home/rfindley/src/tools/internal/lsp/source/completion/completion.go:1065 +0x193 Change-Id: I82350b30172ead95b6611962c2e040cc49259dc2 Reviewed-on: https://go-review.googlesource.com/c/tools/+/254697 Run-TryBot: Robert Findley gopls-CI: kokoro TryBot-Result: Go Bot Reviewed-by: Rebecca Stambler --- internal/lsp/source/completion/completion.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/lsp/source/completion/completion.go b/internal/lsp/source/completion/completion.go index f1e16a802c..fc34802fac 100644 --- a/internal/lsp/source/completion/completion.go +++ b/internal/lsp/source/completion/completion.go @@ -1051,6 +1051,9 @@ func (c *completer) addFieldItems(ctx context.Context, fields *ast.FieldList) { continue } obj := c.pkg.GetTypesInfo().ObjectOf(name) + if obj == nil { + continue + } // if we're in a field comment/doc, score that field as more relevant score := stdScore