Skip to content

Error in $.params.processId: parsing Int32 failed, expected Number, but encountered Object #3340

Closed
@joseedil

Description

@joseedil

Your environment

Which OS do you use?
MacOS 12.6.1
Which version of GHC do you use and how did you install it?
9.0.2 from ghcup
How is your project built (alternative: link to the project)?
stack (resolver: lts-19.33) - ghc 9.0.2

Which LSP client (editor/plugin) do you use?
emacs+eglot (but the same happens on lsp-mode)
Which version of HLS do you use and how did you install it?
1.8.0.0 from ghcup
Have you configured HLS in any way (especially: a hie.yaml file)?

Steps to reproduce

Create new project with stack new my-project new-template.
Adjust resolver to lts-19.33
Open project with emacs and load eglot.

Expected behaviour

LSP server should connect to haskell-language-server and do its thing.

Actual behaviour

The client indeed connects to the server, but it crashes whenever you try to use it.
For instance, open src/Lib.hs and hover over the putStrLn usage to get typing information and the server crashes with a message similar to
Server lsp-haskell:32993/starting exited (check corresponding stderr buffer for details). Do you want to restart it? (y or n)

Restarting the server makes it work for a few seconds and crash again in the same manner.

Not sure if the issue is related to haskell-language-server itself or the emacs client.

The VS Code extension works fine in the same project taking the same server from ghcup.

Debug information

stderr output

Notice the error in the last line.

No 'hie.yaml' found. Try to discover the project type!
Run entered for haskell-language-server-wrapper(haskell-language-server-wrapper) Version 1.8.0.0 x86_64 ghc-9.4.2
Current directory: /Users/jose.edil/2-development/haskell/helloworld
Operating system: darwin
Arguments: ["--lsp"]
Cradle directory: /Users/jose.edil/2-development/haskell/helloworld
Cradle type: Stack

Tool versions found on the $PATH
cabal:          3.8.1.0
stack:          2.9.1
ghc:            9.0.2


Consulting the cradle to get project GHC version...
Project GHC version: 9.0.2
haskell-language-server exe candidates: ["haskell-language-server-9.0.2","haskell-language-server"]
Launching haskell-language-server exe at:/Users/jose.edil/.ghcup/bin/haskell-language-server-9.0.2
2022-11-17T02:39:38.738801Z | Info | No log file specified; using stderr.
2022-11-17T02:39:38.739711Z | Info | haskell-language-server version: 1.8.0.0 (GHC: 9.0.2) (PATH: /Users/jose.edil/.ghcup/hls/1.8.0.0/lib/haskell-language-server-1.8.0.0/bin/haskell-language-server-9.0.2)
2022-11-17T02:39:38.740439Z | Info | Directory: /Users/jose.edil/2-development/haskell/helloworld
2022-11-17T02:39:38.740764Z | Info | Starting (haskell-language-server) LSP server...
  GhcideArguments {argsCommand = LSP, argsCwd = Nothing, argsShakeProfiling = Nothing, argsTesting = False, argsExamplePlugin = False, argsDebugOn = False, argsLogFile = Nothing, argsThreads = 0, argsProjectGhcVersion = False}
  PluginIds: [ pragmas
             , LSPRecorderCallback
             , rename
             , ghcide-completions
             , class
             , refineImports
             , splice
             , changeTypeSignature
             , qualifyImportedNames
             , alternateNumberFormat
             , hlint
             , ghcide-code-actions-fill-holes
             , floskell
             , ghcide-extend-import-action
             , codeRange
             , haddockComments
             , importLens
             , retrie
             , ghcide-type-lenses
             , ghcide-code-actions-imports-exports
             , ghcide-hover-and-symbols
             , eval
             , gadt
             , fourmolu
             , tactics
             , callHierarchy
             , stylish-haskell
             , ghcide-code-actions-type-signatures
             , ghcide-code-actions-bindings
             , moduleName
             , ormolu
             , ghcide-core
             , explicitFixity ]
2022-11-17T02:39:38.744893Z | Info | Logging heap statistics every 60.00s
 2022-11-17T02:39:38.846623Z | Info | Starting LSP server...
  If you are seeing this in a terminal, you probably should have run WITHOUT the --lsp option!
  PluginIds: [ pragmas
             , LSPRecorderCallback
             , rename
             , ghcide-completions
             , class
             , refineImports
             , splice
             , changeTypeSignature
             , qualifyImportedNames
             , alternateNumberFormat
             , hlint
             , ghcide-code-actions-fill-holes
             , floskell
             , ghcide-extend-import-action
             , codeRange
             , haddockComments
             , importLens
             , retrie
             , ghcide-type-lenses
             , ghcide-code-actions-imports-exports
             , ghcide-hover-and-symbols
             , eval
             , gadt
             , fourmolu
             , tactics
             , callHierarchy
             , stylish-haskell
             , ghcide-code-actions-type-signatures
             , ghcide-code-actions-bindings
             , moduleName
             , ormolu
             , ghcide-core
             , explicitFixity ]
2022-11-17T02:39:38.846958Z | Info | Starting server
2022-11-17T02:39:38.848191Z | Error | Got error while decoding initialize:
Error in $.params.processId: parsing Int32 failed, expected Number, but encountered Object

LSP log: lsp-haskell:32993

Notice the processId: null at the beginning.
In that specific session haskell-language-server had pid 32993.

[Trace - 11:39:29 PM] Sending request 'initialize - (1)'.
Params: {
  "processId": null,
  "rootPath": "/Users/jose.edil/2-development/haskell/helloworld",
  "clientInfo": {
    "name": "emacs",
    "version": "GNU Emacs 28.2 (build 1, x86_64-apple-darwin21.6.0, Carbon Version 165 AppKit 2113.6)\n of 2022-11-16"
  },
  "rootUri": "file:///Users/jose.edil/2-development/haskell/helloworld",
  "capabilities": {
    "workspace": {
      "workspaceEdit": {
        "documentChanges": true,
        "resourceOperations": [
          "create",
          "rename",
          "delete"
        ]
      },
      "applyEdit": true,
      "symbol": {
        "symbolKind": {
          "valueSet": [
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            24,
            25,
            26
          ]
        }
      },
      "executeCommand": {
        "dynamicRegistration": false
      },
      "didChangeWatchedFiles": {
        "dynamicRegistration": true
      },
      "workspaceFolders": true,
      "configuration": true,
      "codeLens": {
        "refreshSupport": true
      },
      "fileOperations": {
        "didCreate": false,
        "willCreate": false,
        "didRename": true,
        "willRename": true,
        "didDelete": false,
        "willDelete": false
      }
    },
    "textDocument": {
      "declaration": {
        "dynamicRegistration": true,
        "linkSupport": true
      },
      "definition": {
        "dynamicRegistration": true,
        "linkSupport": true
      },
      "references": {
        "dynamicRegistration": true
      },
      "implementation": {
        "dynamicRegistration": true,
        "linkSupport": true
      },
      "typeDefinition": {
        "dynamicRegistration": true,
        "linkSupport": true
      },
      "synchronization": {
        "willSave": true,
        "didSave": true,
        "willSaveWaitUntil": true
      },
      "documentSymbol": {
        "symbolKind": {
          "valueSet": [
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            24,
            25,
            26
          ]
        },
        "hierarchicalDocumentSymbolSupport": true
      },
      "formatting": {
        "dynamicRegistration": true
      },
      "rangeFormatting": {
        "dynamicRegistration": true
      },
      "onTypeFormatting": {
        "dynamicRegistration": true
      },
      "rename": {
        "dynamicRegistration": true,
        "prepareSupport": true
      },
      "codeAction": {
        "dynamicRegistration": true,
        "isPreferredSupport": true,
        "codeActionLiteralSupport": {
          "codeActionKind": {
            "valueSet": [
              "",
              "quickfix",
              "refactor",
              "refactor.extract",
              "refactor.inline",
              "refactor.rewrite",
              "source",
              "source.organizeImports"
            ]
          }
        },
        "resolveSupport": {
          "properties": [
            "edit",
            "command"
          ]
        },
        "dataSupport": true
      },
      "completion": {
        "completionItem": {
          "snippetSupport": false,
          "documentationFormat": [
            "markdown",
            "plaintext"
          ],
          "resolveAdditionalTextEditsSupport": true,
          "insertReplaceSupport": true,
          "deprecatedSupport": true,
          "resolveSupport": {
            "properties": [
              "documentation",
              "detail",
              "additionalTextEdits",
              "command"
            ]
          },
          "insertTextModeSupport": {
            "valueSet": [
              1,
              2
            ]
          }
        },
        "contextSupport": true,
        "dynamicRegistration": true
      },
      "signatureHelp": {
        "signatureInformation": {
          "parameterInformation": {
            "labelOffsetSupport": true
          }
        },
        "dynamicRegistration": true
      },
      "documentLink": {
        "dynamicRegistration": true,
        "tooltipSupport": true
      },
      "hover": {
        "contentFormat": [
          "markdown",
          "plaintext"
        ],
        "dynamicRegistration": true
      },
      "foldingRange": {
        "dynamicRegistration": true
      },
      "selectionRange": {
        "dynamicRegistration": true
      },
      "callHierarchy": {
        "dynamicRegistration": false
      },
      "typeHierarchy": {
        "dynamicRegistration": true
      },
      "publishDiagnostics": {
        "relatedInformation": true,
        "tagSupport": {
          "valueSet": [
            1,
            2
          ]
        },
        "versionSupport": true
      },
      "linkedEditingRange": {
        "dynamicRegistration": true
      }
    },
    "window": {
      "workDoneProgress": true,
      "showDocument": {
        "support": true
      }
    }
  },
  "initializationOptions": null,
  "workDoneToken": "1"
}

Emacs config

Relevant snippet from my emacs config file

(use-package eglot
  :ensure t
  :commands (eglot eglot-ensure)
  :hook ((rust-mode . eglot-ensure)
         (haskell-mode . eglot-ensure)
         (pyhton-mode . eglot-ensure)))


(use-package lsp-haskell
  :ensure t
  :after (haskell-mode eglot)
  :hook
  (haskell-mode . lsp)
  (haskell-literate-mode . lsp)
  :config
  (setq lsp-haskell-server-path "haskell-language-server-wrapper")
  (setq lsp-haskell-server-args ())
  (setq lsp-log-io t)
  :custom
  (setq lsp-haskell-completion-snippets-on nil))

Metadata

Metadata

Assignees

No one assigned

    Labels

    component: lsptype: bugSomething isn't right: doesn't work as intended, documentation is missing/outdated, etc..

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions