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: illegal line number panic #37226

Closed
myitcv opened this issue Feb 14, 2020 · 1 comment
Closed

x/tools/gopls: illegal line number panic #37226

myitcv opened this issue Feb 14, 2020 · 1 comment

Comments

@myitcv
Copy link
Member

@myitcv myitcv commented Feb 14, 2020

What version of Go are you using (go version)?

$ go version
go version devel +b7689f5aa3 Fri Jan 31 06:02:00 2020 +0000 linux/amd64
$ go list -m golang.org/x/tools
golang.org/x/tools v0.0.0-20200213224642-88e652f7a869
$ go list -m golang.org/x/tools/gopls
golang.org/x/tools/gopls v0.1.8-0.20200213224642-88e652f7a869

Does this issue reproduce with the latest release?

Yes

What operating system and processor architecture are you using (go env)?

go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/myitcv/.cache/go-build"
GOENV="/home/myitcv/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/myitcv/gostuff"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/home/myitcv/gos"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/home/myitcv/gos/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/home/myitcv/.vim/plugged/govim/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build830932815=/tmp/go-build -gno-record-gcc-switches"

What did you do?

Removing the closing } of a function at the end of a file results in a panic:

panic: illegal line number

goroutine 950 [running]:
go/token.(*File).LineStart(0xc000345800, 0x7, 0x0)
	/home/myitcv/gos/src/go/token/position.go:222 +0xe8
golang.org/x/tools/internal/lsp/cache.fixMissingCurlies(0xc000174700, 0xc0001ba4b0, 0xdbfec0, 0xc000397f90, 0xc000345800, 0xc000a8fc80, 0x5f, 0x5f, 0x5, 0xc000174800, ...)
	/home/myitcv/gostuff/pkg/mod/golang.org/x/tools@v0.0.0-20200213224642-88e652f7a869/internal/lsp/cache/parse.go:336 +0x149
golang.org/x/tools/internal/lsp/cache.fixSrc.func1(0xdbf580, 0xc0001ba4b0, 0xdbfec0, 0xc000397f90, 0xba3301)
	/home/myitcv/gostuff/pkg/mod/golang.org/x/tools@v0.0.0-20200213224642-88e652f7a869/internal/lsp/cache/parse.go:302 +0x17d
golang.org/x/tools/internal/lsp/cache.walkASTWithParent.func1(0xdbf580, 0xc0001ba4b0, 0xdc0200)
	/home/myitcv/gostuff/pkg/mod/golang.org/x/tools@v0.0.0-20200213224642-88e652f7a869/internal/lsp/cache/parse.go:288 +0xb2
go/ast.inspector.Visit(0xc00033cf20, 0xdbf580, 0xc0001ba4b0, 0x0, 0x0)
	/home/myitcv/gos/src/go/ast/walk.go:373 +0x3a
go/ast.Walk(0xdbc4c0, 0xc00033cf20, 0xdbf580, 0xc0001ba4b0)
	/home/myitcv/gos/src/go/ast/walk.go:52 +0x66
go/ast.Walk(0xdbc4c0, 0xc00033cf20, 0xdbfec0, 0xc000397f90)
	/home/myitcv/gos/src/go/ast/walk.go:285 +0x2946
go/ast.walkStmtList(0xdbc4c0, 0xc00033cf20, 0xc000c33680, 0x3, 0x4)
	/home/myitcv/gos/src/go/ast/walk.go:32 +0x9e
go/ast.Walk(0xdbc4c0, 0xc00033cf20, 0xdbf580, 0xc0001ba840)
	/home/myitcv/gos/src/go/ast/walk.go:224 +0x1adf
go/ast.Walk(0xdbc4c0, 0xc00033cf20, 0xdbfa80, 0xc0001baa80)
	/home/myitcv/gos/src/go/ast/walk.go:344 +0xd98
go/ast.walkDeclList(0xdbc4c0, 0xc00033cf20, 0xc00069f6f0, 0x1, 0x1)
	/home/myitcv/gos/src/go/ast/walk.go:38 +0x9e
go/ast.Walk(0xdbc4c0, 0xc00033cf20, 0xdbfa00, 0xc000174700)
	/home/myitcv/gos/src/go/ast/walk.go:353 +0x264e
go/ast.Inspect(...)
	/home/myitcv/gos/src/go/ast/walk.go:385
golang.org/x/tools/internal/lsp/cache.walkASTWithParent(0xdbfa00, 0xc000174700, 0xc000c33800)
	/home/myitcv/gostuff/pkg/mod/golang.org/x/tools@v0.0.0-20200213224642-88e652f7a869/internal/lsp/cache/parse.go:271 +0x9e
golang.org/x/tools/internal/lsp/cache.fixSrc(0xc000174700, 0xc000345800, 0xc000a8fc80, 0x5f, 0x5f, 0xc000a8fc80, 0x5f, 0x5f)
	/home/myitcv/gostuff/pkg/mod/golang.org/x/tools@v0.0.0-20200213224642-88e652f7a869/internal/lsp/cache/parse.go:295 +0xc0
golang.org/x/tools/internal/lsp/cache.parseGo(0xdcbea0, 0xc0003c1ef0, 0xc0003bef40, 0xdca560, 0xc0003454a0, 0x2, 0x0)
	/home/myitcv/gostuff/pkg/mod/golang.org/x/tools@v0.0.0-20200213224642-88e652f7a869/internal/lsp/cache/parse.go:140 +0x827
golang.org/x/tools/internal/lsp/cache.(*cache).ParseGoHandle.func1(0xdcbde0, 0xc000c334c0, 0x0, 0x468486)
	/home/myitcv/gostuff/pkg/mod/golang.org/x/tools@v0.0.0-20200213224642-88e652f7a869/internal/lsp/cache/parse.go:57 +0x59
golang.org/x/tools/internal/memoize.(*Handle).run.func1(0xdcbde0, 0xc000c334c0, 0xc0003c1c50, 0xc000345680)
	/home/myitcv/gostuff/pkg/mod/golang.org/x/tools@v0.0.0-20200213224642-88e652f7a869/internal/memoize/memoize.go:216 +0x6b
created by golang.org/x/tools/internal/memoize.(*Handle).run
	/home/myitcv/gostuff/pkg/mod/golang.org/x/tools@v0.0.0-20200213224642-88e652f7a869/internal/memoize/memoize.go:210 +0x116

Log file: fail.log

What did you expect to see?

No panic

What did you see instead?

As above.


cc @stamblerre

FYI @leitzler

@gopherbot gopherbot added this to the Unreleased milestone Feb 14, 2020
@gopherbot gopherbot added the Tools label Feb 14, 2020
@stamblerre stamblerre modified the milestones: Unreleased, gopls/v0.4.0 Feb 14, 2020
@gopherbot
Copy link

@gopherbot gopherbot commented Feb 14, 2020

Change https://golang.org/cl/219498 mentions this issue: internal/lsp/cache: fix crash fixing curlies near EOF

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
3 participants
You can’t perform that action at this time.