Open Hu1buerger opened 2 years ago
Hi, thanks for reporting the issue. As it is related with the lsp server, will move it to the haskell-language-server. It would be great to have the lsp log when the error is reproduced, following the steps described here: https://github.com/haskell/vscode-haskell#troubleshooting
@jneira will do.
@jneira here is the debug log.
{-|
>>> add 1 2
}
add x y = x + y
is actually a parse error because }
does not close the block comment. Is that what was actually entered?
Fwiw, I can't reproduce using the nixos flake dev shell, ghc 8.10.7, hls commit 1b69975000a0618bb8885646685f6879a9f9e916
I met same issue in MacOS Big Sur (11.6) and using homebrew built haskell-language-server ang GHC (8.10.7)
I noticed -- >>> import Prelude
works fine, but -- >>> 1 + 1
or -- >>> a = 1
cause hls crash.
after doing some simple source code following, I found:
https://github.com/haskell/haskell-language-server/blob/e1949dd5e37db2b0a3b5490bc52976fd154d794d/plugins/hls-eval-plugin/src/Ide/Plugin/Eval/CodeLens.hs#L499
myExecStmt
is called newTempFile
, and I can see temp file like extra-file-12162067389-64378-3
presented and empty, but not deleted. so my guessing is hls crash at calling runDecls
declaration case call runDecls
too
https://github.com/haskell/haskell-language-server/blob/e1949dd5e37db2b0a3b5490bc52976fd154d794d/plugins/hls-eval-plugin/src/Ide/Plugin/Eval/CodeLens.hs#L513-L516
but runDecls
is GHC api, I don't have farther ability to debug it.
@jneira hope it could help
may related to #2000
Yeah I do think it's related to linking because it seems to be Mac specific and the eval plugin depends on how libraries are linked.
I've been having the same issue. I started using HLS in vscode last summer. Everything worked fine until a week ago or so. Since then, evaluating expressions results in the "Connection got disposed." message most of the time. After trying several times, I get "The Haskell server crashed 5 times in the last 3 minutes. The server will not be restarted.".
The strange thing is that it still works some of the time, maybe 1 in 20 tries. Maybe there is some race condition?
Here is the log recording one such event (with "Haskell > Trace :Client" set to "debug"): hls.log
Relevant section:
2022-02-28 00:55:38.684667826 [ThreadId 1279] INFO hls: finish: Wingman.judgementForHole.False (took 0.00s)
2022-02-28 00:56:02.334442573 [ThreadId 1321] INFO hls: finish: runEvalCmd.getModSummary (took 0.00s)
2022-02-28 00:56:02.334403983 [ThreadId 1300] INFO hls: finish: eval (took 0.04s)
haskell-language-server-wrapper: callProcess: /home/brunnerj/.ghcup/bin/haskell-language-server-8.10.7 "--lsp" (exit -11): failed
[Info - 12:56:06 AM] Connection to server got closed. Server will restart.
[Error - 12:56:06 AM] Request workspace/executeCommand failed.
Error: Connection got disposed.
at Object.dispose (/home/brunnerj/.vscode-oss/extensions/haskell.haskell-1.8.0/dist/extension.js:2:1010893)
at Object.dispose (/home/brunnerj/.vscode-oss/extensions/haskell.haskell-1.8.0/dist/extension.js:2:1090976)
at k.handleConnectionClosed (/home/brunnerj/.vscode-oss/extensions/haskell.haskell-1.8.0/dist/extension.js:2:1091189)
at k.handleConnectionClosed (/home/brunnerj/.vscode-oss/extensions/haskell.haskell-1.8.0/dist/extension.js:2:1151535)
at t (/home/brunnerj/.vscode-oss/extensions/haskell.haskell-1.8.0/dist/extension.js:2:1089278)
at n.invoke (/home/brunnerj/.vscode-oss/extensions/haskell.haskell-1.8.0/dist/extension.js:2:1012506)
at a.fire (/home/brunnerj/.vscode-oss/extensions/haskell.haskell-1.8.0/dist/extension.js:2:1013267)
at Y (/home/brunnerj/.vscode-oss/extensions/haskell.haskell-1.8.0/dist/extension.js:2:1000151)
at n.invoke (/home/brunnerj/.vscode-oss/extensions/haskell.haskell-1.8.0/dist/extension.js:2:1012506)
at a.fire (/home/brunnerj/.vscode-oss/extensions/haskell.haskell-1.8.0/dist/extension.js:2:1013267)
at fireClose (/home/brunnerj/.vscode-oss/extensions/haskell.haskell-1.8.0/dist/extension.js:2:1021148)
at Socket.<anonymous> (/home/brunnerj/.vscode-oss/extensions/haskell.haskell-1.8.0/dist/extension.js:2:1022733)
at Socket.emit (events.js:327:22)
at Pipe.<anonymous> (net.js:673:12)
I started vscode at 00:55:38 and clicked on the evaluation code lens at 00:56:02. It looks like the actual evaluation executes successfully, but then HLS exits with code -11 and vscode tries to access the dead connection? I'm not entirely sure what's happening here.
versions
Haskell extension v1.7.1. GHCi, version 8.10.7 Vscode: ``` Version: 1.62.2 Commit: 3a6960b964327f0e3882ce18fcebd07ed191b316 Date: 2021-11-11T20:59:05.913Z (5 days ago) Electron: 13.5.2 Chrome: 91.0.4472.164 Node.js: 14.16.0 V8: 9.1.269.39-electron.0 OS: Darwin x64 20.6.0 ```How to reproduce
Assume the following code. Opened in Vscode as
test.hs
.Evaluate...
on top of>>>add 1 2
.REDCROSS_IN_CIRCLE Connection got disposed
What I tried.
>Haskell: Restart Haskell LSP Server
No fix as of now.