Closed babariviere closed 4 years ago
This doesn't seem to be specific to the AWS provider, as I'm seeing a similar crash without it, when hovering over elements:
2019/08/09 16:11:57 Server started
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x58 pc=0x14d70ac]
goroutine 43 [running]:
github.com/hashicorp/terraform/lang.(*Scope).evalContext(0xc0000ab0e0, 0xc000438100, 0x1, 0x1, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0)
/home/travis/gopath/pkg/mod/github.com/hashicorp/terraform@v0.12.5/lang/eval.go:184 +0x11c
github.com/hashicorp/terraform/lang.(*Scope).EvalContext(0xc0000ab0e0, 0xc000438100, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0)
/home/travis/gopath/pkg/mod/github.com/hashicorp/terraform@v0.12.5/lang/eval.go:160 +0x5f
github.com/hashicorp/terraform/lang.(*Scope).EvalExpr(0xc0000ab0e0, 0x1da8e00, 0xc00019c1e0, 0x1da9ac0, 0x2542040, 0x1a82940, 0xc00020c000, 0x1bda9e3, 0x6, 0xc0003a2160, ...)
/home/travis/gopath/pkg/mod/github.com/hashicorp/terraform@v0.12.5/lang/eval.go:87 +0xa0
main.TextDocumentHover(0x1da87c0, 0xc000090780, 0xc00003e120, 0x56, 0x7, 0x8, 0x0, 0x0, 0x0, 0x0, ...)
/home/travis/gopath/src/github.com/juliosueiras/terraform-lsp/main.go:549 +0x28c
reflect.Value.call(0x1a8dcc0, 0x1c20698, 0x13, 0x1bd8646, 0x4, 0xc0000908d0, 0x2, 0x2, 0x2525040, 0xc0001b7dc8, ...)
/home/travis/.gimme/versions/go1.11.12.linux.amd64/src/reflect/value.go:447 +0x454
reflect.Value.Call(0x1a8dcc0, 0x1c20698, 0x13, 0xc0000908d0, 0x2, 0x2, 0x1a313c0, 0xc0000908d0, 0x1)
/home/travis/.gimme/versions/go1.11.12.linux.amd64/src/reflect/value.go:308 +0xa4
reflect.Value.Call-fm(0xc0000908d0, 0x2, 0x2, 0x1, 0xc00000a660, 0x1)
/home/travis/gopath/pkg/mod/github.com/creachadair/jrpc2@v0.1.2/handler/handler.go:211 +0x60
github.com/creachadair/jrpc2/handler.newHandler.func7(0x1da87c0, 0xc000090780, 0xc000043ac0, 0xc000043b30, 0xc000060ee8, 0x10, 0xc000060ee0)
/home/travis/gopath/pkg/mod/github.com/creachadair/jrpc2@v0.1.2/handler/handler.go:222 +0x22b
github.com/creachadair/jrpc2/handler.Func.Handle(0xc00043a5e0, 0x1da87c0, 0xc000090780, 0xc000043ac0, 0x0, 0x0, 0x1da87c0, 0xc000090780)
/home/travis/gopath/pkg/mod/github.com/creachadair/jrpc2@v0.1.2/handler/handler.go:23 +0x44
github.com/creachadair/jrpc2.(*Server).invoke(0xc0004ac000, 0x1da8700, 0xc000432c00, 0x1d9d820, 0xc00043a5e0, 0xc000043ac0, 0x0, 0x0, 0x0, 0x0, ...)
/home/travis/gopath/pkg/mod/github.com/creachadair/jrpc2@v0.1.2/server.go:294 +0x1b0
github.com/creachadair/jrpc2.(*Server).dispatch.func1(0xc0004ea520, 0xc0004ac000, 0xc0002f2510)
/home/travis/gopath/pkg/mod/github.com/creachadair/jrpc2@v0.1.2/server.go:185 +0x101
created by github.com/creachadair/jrpc2.(*Server).dispatch
/home/travis/gopath/pkg/mod/github.com/creachadair/jrpc2@v0.1.2/server.go:183 +0x13a
[Info - 4:12:14 PM] Connection to server got closed. Server will restart.
[Error - 4:12:14 PM] Request textDocument/hover failed.
Error: Connection got disposed.
at Object.dispose (/Users/john/.vscode/extensions/mauve.terraform-1.4.50/node_modules/vscode-jsonrpc/lib/main.js:876:25)
at Object.dispose (/Users/john/.vscode/extensions/mauve.terraform-1.4.50/node_modules/vscode-languageclient/lib/client.js:71:35)
at LanguageClient.handleConnectionClosed (/Users/john/.vscode/extensions/mauve.terraform-1.4.50/node_modules/vscode-languageclient/lib/client.js:2153:42)
at LanguageClient.handleConnectionClosed (/Users/john/.vscode/extensions/mauve.terraform-1.4.50/node_modules/vscode-languageclient/lib/main.js:151:15)
at closeHandler (/Users/john/.vscode/extensions/mauve.terraform-1.4.50/node_modules/vscode-languageclient/lib/client.js:2140:18)
at CallbackList.invoke (/Users/john/.vscode/extensions/mauve.terraform-1.4.50/node_modules/vscode-jsonrpc/lib/events.js:62:39)
at Emitter.fire (/Users/john/.vscode/extensions/mauve.terraform-1.4.50/node_modules/vscode-jsonrpc/lib/events.js:120:36)
at closeHandler (/Users/john/.vscode/extensions/mauve.terraform-1.4.50/node_modules/vscode-jsonrpc/lib/main.js:226:26)
at CallbackList.invoke (/Users/john/.vscode/extensions/mauve.terraform-1.4.50/node_modules/vscode-jsonrpc/lib/events.js:62:39)
at Emitter.fire (/Users/john/.vscode/extensions/mauve.terraform-1.4.50/node_modules/vscode-jsonrpc/lib/events.js:120:36)
at StreamMessageReader.fireClose (/Users/john/.vscode/extensions/mauve.terraform-1.4.50/node_modules/vscode-jsonrpc/lib/messageReader.js:111:27)
at Socket.listen.readable.on (/Users/john/.vscode/extensions/mauve.terraform-1.4.50/node_modules/vscode-jsonrpc/lib/messageReader.js:151:46)
at Socket.emit (events.js:187:15)
at Pipe.Socket._destroy._handle.close (net.js:606:12)
2019/08/09 16:12:14 Server started
I managed to make it crash with the following minimal TF configuration:
provider "random" {}
resource "random_string" "foo" {
length = 10
keepers = {
keeper = var.keeper
}
}
output "out" {
value = random_string.foo.result
}
variable "keeper" {
default = "foo"
}
Crashed for me after adding locals to @tomasaschan's example.
terraform validate is ok, but vscode finding an error:
and LSP crashes immediately after hovering on local.this
.
Just locals with no providers are not crashing though:
locals {
this = "this"
}
output "out" {
value = local.this
}
Tested on:
@juliosueiras If one would like to try to pin this down and attempt to fix it, what is a good workflow for testing it out? How would I build and test a change to see if it solves the problem?
(Readme says to run go build
, but that doesn't give me any hints on where to put testing config or how to make use of this provider in a test project somewhere...)
@juliosueiras @babariviere I can't reproduce this anymore with the 0.0.9 build of the language server 🎉
Opening file with migration to terraform 0.12 cause a segfault to lsp.
Here is the backtrace: