Metals: NPE crash on Sublime Text 3

Created on 1 Feb 2019  路  8Comments  路  Source: scalameta/metals

Describe the bug

Clean install on sublime

To Reproduce

Go To Definition or any Command

Feb 01, 2019 3:05:25 PM org.eclipse.lsp4j.jsonrpc.RemoteEndpoint fallbackResponseError
SEVERE: Internal error: java.lang.NullPointerException
java.util.concurrent.CompletionException: java.lang.NullPointerException
    at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:292)
    at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:308)
    at java.util.concurrent.CompletableFuture.uniAccept(CompletableFuture.java:647)
    at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:632)
    at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)
    at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977)
    at scala.concurrent.java8.FuturesConvertersImpl$CF.apply(FutureConvertersImpl.scala:21)
    at scala.concurrent.java8.FuturesConvertersImpl$CF.apply(FutureConvertersImpl.scala:18)
    at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:64)
    at scala.concurrent.BatchingExecutor$Batch.processBatch$1(BatchingExecutor.scala:67)
    at scala.concurrent.BatchingExecutor$Batch.$anonfun$run$1(BatchingExecutor.scala:82)
    at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
    at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:85)
    at scala.concurrent.BatchingExecutor$Batch.run(BatchingExecutor.scala:59)
    at scala.concurrent.Future$InternalCallbackExecutor$.unbatchedExecute(Future.scala:874)
    at scala.concurrent.BatchingExecutor.execute(BatchingExecutor.scala:110)
    at scala.concurrent.BatchingExecutor.execute$(BatchingExecutor.scala:107)
    at scala.concurrent.Future$InternalCallbackExecutor$.execute(Future.scala:872)
    at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:72)
    at scala.concurrent.impl.Promise$DefaultPromise.$anonfun$tryComplete$1(Promise.scala:288)
    at scala.concurrent.impl.Promise$DefaultPromise.$anonfun$tryComplete$1$adapted(Promise.scala:288)
    at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:288)
    at scala.concurrent.Promise.complete(Promise.scala:53)
    at scala.concurrent.Promise.complete$(Promise.scala:52)
    at scala.concurrent.impl.Promise$DefaultPromise.complete(Promise.scala:187)
    at scala.concurrent.impl.Promise.$anonfun$transform$1(Promise.scala:33)
    at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:64)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
    at scala.meta.internal.metals.MetalsLanguageServer.updateWorkspaceDirectory(MetalsLanguageServer.scala:253)
    at scala.meta.internal.metals.MetalsLanguageServer.$anonfun$initialize$2(MetalsLanguageServer.scala:296)
    at scala.concurrent.Future$.$anonfun$apply$1(Future.scala:658)
    at scala.util.Success.$anonfun$map$1(Try.scala:255)
    at scala.util.Success.map(Try.scala:213)
    at scala.concurrent.Future.$anonfun$map$1(Future.scala:292)
    at scala.concurrent.impl.Promise.liftedTree1$1(Promise.scala:33)
    ... 5 more

Expected behavior

No Crash

Installation:

  • Operating system: Linux (NixOS)
  • Editor: Sublime Text 3
  • Metals version: v0.4.1 and 0.4.1+3-fdbb6431-SNAPSHOT
bug

All 8 comments

getWorkspaceFolders returns null. I will try to create a workspace to see if it works around this problem.

InitializeParams [
  processId = 13450
  rootPath = "/home/gui/automat/product-recommentation-engine"
  rootUri = "file:///home/gui/automat/product-recommentation-engine"
  initializationOptions = null
  capabilities = ClientCapabilities [
    workspace = WorkspaceClientCapabilities [
      applyEdit = true
      workspaceEdit = null
      didChangeConfiguration = DidChangeConfigurationCapabilities [
        dynamicRegistration = null
      ]
      didChangeWatchedFiles = null
      symbol = null
      executeCommand = null
      workspaceFolders = null
      configuration = null
    ]
    textDocument = TextDocumentClientCapabilities [
      synchronization = SynchronizationCapabilities [
        willSave = null
        willSaveWaitUntil = null
        didSave = true
        dynamicRegistration = null
      ]
      completion = CompletionCapabilities [
        completionItem = CompletionItemCapabilities [
          snippetSupport = true
          commitCharactersSupport = null
          documentationFormat = null
          deprecatedSupport = null
          preselectSupport = null
        ]
        completionItemKind = CompletionItemKindCapabilities [
          valueSet = ArrayList (
            Text,
            Method,
            Function,
            Constructor,
            Field,
            Variable,
            Class,
            Interface,
            Module,
            Property,
            Unit,
            Value,
            Enum,
            Keyword,
            Snippet,
            Color,
            File,
            Reference
          )
        ]
        contextSupport = null
        dynamicRegistration = null
      ]
      hover = HoverCapabilities [
        contentFormat = ArrayList (
          "markdown",
          "plaintext"
        )
        dynamicRegistration = null
      ]
      signatureHelp = SignatureHelpCapabilities [
        signatureInformation = SignatureInformationCapabilities [
          documentationFormat = ArrayList (
            "markdown",
            "plaintext"
          )
        ]
        dynamicRegistration = null
      ]
      references = ReferencesCapabilities [
        dynamicRegistration = null
      ]
      documentHighlight = DocumentHighlightCapabilities [
        dynamicRegistration = null
      ]
      documentSymbol = DocumentSymbolCapabilities [
        symbolKind = SymbolKindCapabilities [
          valueSet = ArrayList (
            File,
            Module,
            Namespace,
            Package,
            Class,
            Method,
            Property,
            Field,
            Interface,
            Function,
            Variable,
            Constant
          )
        ]
        hierarchicalDocumentSymbolSupport = null
        dynamicRegistration = null
      ]
      formatting = FormattingCapabilities [
        dynamicRegistration = null
      ]
      rangeFormatting = RangeFormattingCapabilities [
        dynamicRegistration = null
      ]
      onTypeFormatting = null
      definition = DefinitionCapabilities [
        dynamicRegistration = null
      ]
      typeDefinition = null
      implementation = null
      codeAction = CodeActionCapabilities [
        codeActionLiteralSupport = null
        dynamicRegistration = null
      ]
      codeLens = null
      documentLink = null
      colorProvider = null
      rename = RenameCapabilities [
        dynamicRegistration = null
      ]
      publishDiagnostics = null
      foldingRange = null
      semanticHighlightingCapabilities = null
    ]
    experimental = null
  ]
  clientName = null
  trace = null
  workspaceFolders = null
]

@MasseGuillaume can you check which version for the LSP plugin are you using ?

Thanks for reporting! I forgot to handle null fields, was sloppy. Fix in #517, will publish a quick release after merging.

@olafurpg why not using the rootPath as a fallback ?

We already use rootUri for that, I think workspace folders is a vscode-only feature that allows you to attach additional folders to the workspace.

Oki, workspaces are also available in sublime-text, but not used that much.

v0.4.2 should be out now

Was this page helpful?
0 / 5 - 0 ratings

Related issues

olafurpg picture olafurpg  路  16Comments

tSte picture tSte  路  27Comments

virtualdvid picture virtualdvid  路  17Comments

dos65 picture dos65  路  15Comments

oharboe picture oharboe  路  12Comments