nim-lang / langserver

The Nim language server implementation (based on nimsuggest)
202 stars 29 forks source link

segfaults in stable `1.6.8` #24

Closed scarf005 closed 1 year ago

scarf005 commented 1 year ago

nimsuggest --v3 works, however nimlangserver does not respond to anything (not even nimlangserver --help) and on vscode it crashes this output:

DBG Router: dispatching                        method=initialize id=0
DBG Initialize received...                    
DBG Router: sending response                   method=initialize id=0
DBG Router: dispatching                        method=initialized id=null
DBG Client initialized.                       
DBG Requesting configuration from the client  
DBG Router: dispatching                        method=textDocument/didOpen id=null
DBG New document opened for URI:               uri=file:///home/scarf/repo/etc/nimapple/fplay.nim
DBG Router: dispatching                        method=textDocument/didOpen id=null
DBG New document opened for URI:               uri=file:///home/scarf/repo/etc/nimapple/test.nim
SIGSEGV: Illegal storage access. (Attempt to read from nil?)
[Error - 오후 9:21:32] Connection to server is erroring. Shutting down server.
[Error - 오후 9:21:32] Connection to server is erroring. Shutting down server.
[Error - 오후 9:21:32] Connection to server is erroring. Shutting down server.
[Error - 오후 9:21:32] Connection to server is erroring. Shutting down server.
[Error - 오후 9:21:32] Connection to server is erroring. Shutting down server.
yyoncho commented 1 year ago

can you compile nimlangserver with debug flags?

scarf005 commented 1 year ago
 ~/r/e/nimapple   ffmpeg ±  nimble install -d:debug nimlangserver
Downloading https://github.com/nim-lang/langserver using git
  Verifying dependencies for nimlangserver@0.1.0
      Info: Dependency on https://github.com/yyoncho/asynctools@#non-blocking already satisfied
  Verifying dependencies for asynctools@#non-blocking
      Info: Dependency on https://github.com/yyoncho/nim-json-rpc@#notif-changes already satisfied
  Verifying dependencies for json_rpc@#notif-changes
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on nimcrypto@any version already satisfied
  Verifying dependencies for nimcrypto@0.5.4
      Info: Dependency on stint@any version already satisfied
  Verifying dependencies for stint@0.0.1
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on chronos@any version already satisfied
  Verifying dependencies for chronos@3.0.11
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on bearssl@any version already satisfied
  Verifying dependencies for bearssl@0.2.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on httputils@any version already satisfied
  Verifying dependencies for httputils@0.3.0
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on httputils@any version already satisfied
  Verifying dependencies for httputils@0.3.0
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on chronicles@any version already satisfied
  Verifying dependencies for chronicles@0.10.3
      Info: Dependency on testutils@any version already satisfied
  Verifying dependencies for testutils@0.5.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on json_serialization@any version already satisfied
  Verifying dependencies for json_serialization@0.1.0
      Info: Dependency on serialization@any version already satisfied
  Verifying dependencies for serialization@0.1.0
      Info: Dependency on faststreams@any version already satisfied
  Verifying dependencies for faststreams@0.3.0
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on chronos@any version already satisfied
  Verifying dependencies for chronos@3.0.11
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on bearssl@any version already satisfied
  Verifying dependencies for bearssl@0.2.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on httputils@any version already satisfied
  Verifying dependencies for httputils@0.3.0
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on https://github.com/status-im/news@#status already satisfied
  Verifying dependencies for news@#status
      Info: Dependency on websock@any version already satisfied
  Verifying dependencies for websock@0.1.0
      Info: Dependency on chronos@>= 3.0.0 already satisfied
  Verifying dependencies for chronos@3.0.11
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on bearssl@any version already satisfied
  Verifying dependencies for bearssl@0.2.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on httputils@any version already satisfied
  Verifying dependencies for httputils@0.3.0
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on httputils@>= 0.2.0 already satisfied
  Verifying dependencies for httputils@0.3.0
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on chronicles@>= 0.10.2 already satisfied
  Verifying dependencies for chronicles@0.10.3
      Info: Dependency on testutils@any version already satisfied
  Verifying dependencies for testutils@0.5.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on json_serialization@any version already satisfied
  Verifying dependencies for json_serialization@0.1.0
      Info: Dependency on serialization@any version already satisfied
  Verifying dependencies for serialization@0.1.0
      Info: Dependency on faststreams@any version already satisfied
  Verifying dependencies for faststreams@0.3.0
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on chronos@any version already satisfied
  Verifying dependencies for chronos@3.0.11
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on bearssl@any version already satisfied
  Verifying dependencies for bearssl@0.2.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on httputils@any version already satisfied
  Verifying dependencies for httputils@0.3.0
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on stew@>= 0.1.0 already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on nimcrypto@any version already satisfied
  Verifying dependencies for nimcrypto@0.5.4
      Info: Dependency on bearssl@any version already satisfied
  Verifying dependencies for bearssl@0.2.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on zlib@any version already satisfied
  Verifying dependencies for zlib@0.1.0
      Info: Dependency on stew@>= 0.1.0 already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on https://github.com/yyoncho/asynctools@#non-blocking already satisfied
  Verifying dependencies for asynctools@#non-blocking
      Info: Dependency on faststreams@any version already satisfied
  Verifying dependencies for faststreams@0.3.0
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on chronos@any version already satisfied
  Verifying dependencies for chronos@3.0.11
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on bearssl@any version already satisfied
  Verifying dependencies for bearssl@0.2.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on httputils@any version already satisfied
  Verifying dependencies for httputils@0.3.0
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on json_serialization@any version already satisfied
  Verifying dependencies for json_serialization@0.1.0
      Info: Dependency on serialization@any version already satisfied
  Verifying dependencies for serialization@0.1.0
      Info: Dependency on faststreams@any version already satisfied
  Verifying dependencies for faststreams@0.3.0
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on chronos@any version already satisfied
  Verifying dependencies for chronos@3.0.11
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on bearssl@any version already satisfied
  Verifying dependencies for bearssl@0.2.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on httputils@any version already satisfied
  Verifying dependencies for httputils@0.3.0
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on with@any version already satisfied
  Verifying dependencies for with@0.4.0
      Info: Dependency on itertools@any version already satisfied
  Verifying dependencies for itertools@0.4.0
      Info: Dependency on chronicles@any version already satisfied
  Verifying dependencies for chronicles@0.10.3
      Info: Dependency on testutils@any version already satisfied
  Verifying dependencies for testutils@0.5.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on json_serialization@any version already satisfied
  Verifying dependencies for json_serialization@0.1.0
      Info: Dependency on serialization@any version already satisfied
  Verifying dependencies for serialization@0.1.0
      Info: Dependency on faststreams@any version already satisfied
  Verifying dependencies for faststreams@0.3.0
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on chronos@any version already satisfied
  Verifying dependencies for chronos@3.0.11
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on bearssl@any version already satisfied
  Verifying dependencies for bearssl@0.2.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on httputils@any version already satisfied
  Verifying dependencies for httputils@0.3.0
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
      Info: Dependency on stew@any version already satisfied
  Verifying dependencies for stew@0.1.0
      Info: Dependency on unittest2@any version already satisfied
  Verifying dependencies for unittest2@0.0.5
 ~/r/e/nimapple   ffmpeg ±  nimlangserver
nimlangserver: command not found

now it doesn't build at all

krydos commented 1 year ago

Seems like I'm still getting the same error.

I use emacs and eglot as lsp client.

here is the debug output I get:

[stderr] DBG Router: dispatching                        method=initialized id=null
[stderr] DBG Client initialized.                       
[stderr] DBG Requesting configuration from the client  
[stderr] DBG Router: dispatching                        method=textDocument/didOpen id=null
[stderr] DBG New document opened for URI:               uri=file:///main.nim
[stderr] DBG Router: dispatching                        method=textDocument/didOpen id=null
[stderr] DBG New document opened for URI:               uri=file:///webhook.nim
[stderr] SIGSEGV: Illegal storage access. (Attempt to read from nil?)
[server-request] (id:1) Wed Nov 30 19:39:12 2022:
(:jsonrpc "2.0" :method "workspace/configuration" :params
          (:items
           [(:scopeUri nil :section "nim")])
          :id 1)
[internal] Wed Nov 30 19:39:14 2022:
(:message "Connection state changed" :change "segmentation fault: 11\n")

----------b---y---e---b---y---e----------

as https://github.com/nim-lang/langserver/commit/5505c4142840bfc9219de2ab1de2ee0fdf04e9c7 says it handles null configuration so maybe I can configure something to fix this error on my end? How do I configure the nimlangserver if I'm not in vscode?

yyoncho commented 1 year ago

@krydos FWIW it will work in lsp-mode.

I don't see the clients response of workspace/configuration. Can you create a debug build of the language server and paste the call stack?

krydos commented 1 year ago

Sorry guys just started to look at nim like few hours ago. I hope if I build nimlangserver like this nimble -d:debug build it will make the proper build.

So using binary build like above I have this:

``` [server-request] (id:1) Thu Dec 1 00:33:30 2022: (:jsonrpc "2.0" :method "workspace/configuration" :params (:items [(:scopeUri nil :section "nim")]) :id 1) [client-reply] (id:1) Thu Dec 1 00:33:30 2022: (:jsonrpc "2.0" :id 1 :result [nil]) [stderr] DBG Router: dispatching method=initialized id=null [stderr] DBG Client initialized. [stderr] DBG Requesting configuration from the client [stderr] DBG Router: dispatching method=textDocument/didOpen id=null [stderr] DBG New document opened for URI: uri=file:///Users/krydos/Projects/nimlangserver/nimlangserver.nim [stderr] DBG Router: dispatching method=textDocument/didOpen id=null [stderr] DBG New document opened for URI: uri=file:///Users/krydos/Projects/nimlangserver/tests/tnimlangserver.nim [stderr] DBG Router: dispatching method=textDocument/didOpen id=null [stderr] DBG New document opened for URI: uri=file:///Users/krydos/Projects/nimlangserver/protocol/types.nim [stderr] DBG Router: dispatching method=textDocument/didOpen id=null [stderr] DBG New document opened for URI: uri=file:///Users/krydos/Projects/nimlangserver/nimlangserver.nimble [stderr] Traceback (most recent call last) [stderr] /Users/krydos/Projects/nimlangserver/nimlangserver.nim(805) nimlangserver [stderr] /opt/homebrew/Cellar/nim/1.6.10/nim/lib/pure/asyncdispatch.nim(1961) waitFor [stderr] /opt/homebrew/Cellar/nim/1.6.10/nim/lib/pure/asyncdispatch.nim(1653) poll [stderr] /opt/homebrew/Cellar/nim/1.6.10/nim/lib/pure/asyncdispatch.nim(1394) runOnce [stderr] /opt/homebrew/Cellar/nim/1.6.10/nim/lib/pure/asyncdispatch.nim(234) processPendingCallbacks [stderr] /opt/homebrew/Cellar/nim/1.6.10/nim/lib/pure/asyncmacro.nim(31) startNimAsyncContinue [stderr] /Users/krydos/.nimble/pkgs/json_rpc-#notif-changes/json_rpc/streamconnection.nim(141) startIter [stderr] /Users/krydos/.nimble/pkgs/json_rpc-#notif-changes/json_rpc/server.nim(32) route [stderr] /opt/homebrew/Cellar/nim/1.6.10/nim/lib/pure/asyncmacro.nim(232) route [stderr] /opt/homebrew/Cellar/nim/1.6.10/nim/lib/pure/asyncmacro.nim(28) routeNimAsyncContinue [stderr] /Users/krydos/.nimble/pkgs/json_rpc-#notif-changes/json_rpc/router.nim(121) routeIter [stderr] /opt/homebrew/Cellar/nim/1.6.10/nim/lib/pure/asyncmacro.nim(232) route [stderr] /opt/homebrew/Cellar/nim/1.6.10/nim/lib/pure/asyncmacro.nim(28) routeNimAsyncContinue [stderr] /Users/krydos/.nimble/pkgs/json_rpc-#notif-changes/json_rpc/router.nim(85) routeIter [stderr] /Users/krydos/.nimble/pkgs/json_rpc-#notif-changes/json_rpc/router.nim(64) wrapError [stderr] /opt/homebrew/Cellar/nim/1.6.10/nim/lib/pure/json.nim(819) $ [stderr] /opt/homebrew/Cellar/nim/1.6.10/nim/lib/pure/json.nim(505) len [stderr] SIGSEGV: Illegal storage access. (Attempt to read from nil?) [internal] Thu Dec 1 00:33:30 2022: (:message "Connection state changed" :change "segmentation fault: 11\n") ----------b---y---e---b---y---e---------- [stderr] [stderr] [stderr] nil [stderr] nil [stderr] Process EGLOT (nimlangserver/(nim-mode nimscript-mode)) stderr finished ```

Is it useful at all? It just says that it failed at the last line of nimlangserver.nim (sorry, seems like the call order is from top to bottom). Based on debug output (lines starts with DBG) I believe it fails in didOpen procedure.

Is there anything else I can do? Can I get better or more precise callstack somehow?

krydos commented 1 year ago

alright, so json_rpc-#notif-changes/json_rpc/router.nim(64) has this:

StringOfJson(
    """{"jsonrpc":"2.0","id":$1,"error":{"code":$2,"message":$3,"data":$4}}""" % [
      $id, $code, escapeJson(msg), $data # this is the line 64
    ] & "\r\n")

Probably somehow that id variable becomes null (not JNull) which cause error when we try to $ that null. I believe there are cases when eglot just won't set id param in its response or request (see eglot--{}).

That seems to me like eglot's fault but segfaulting is never a good choice for any program (well, maybe sometimes it is 🤣 ).

Replacing that line 64 with: (if isNil(id): "unknown" else: $id), $code, escapeJson(msg), $data solves the issue.

I see @yyoncho you're the author of that json_rpc lib. Do you think my conclusions are ok-ish? Would you accept a pr that does the change?

krydos commented 1 year ago

and I guess it's good idea to reach eglot folks out and let them know that "id" field is important

yyoncho commented 1 year ago

I will accept the PR(I am not the author, this is a fork).

sevalsixarci commented 1 year ago

Hi, I have the same issue with more or less the same environment (vanilla emacs 29 + eglot).

The patch by @krydos - when applied manually - fixes this, but it seems that the server still crashes because eglot send a following signal not registered:

(:jsonrpc "2.0" :id 1 :error
      (:code -32601 :message "'workspace/didChangeConfiguration' is not a registered RPC method" :data nil))

Also, I don't think that is an eglot problem (or at most it is on jsonrpc.el), infact the specification of JSON RPC 2.0 at paragraph 4.1 says that:

A Notification is a Request object without an "id" member. A Request object that is a Notification signifies the Client's lack of interest in the corresponding Response object [...]

sevalsixarci commented 1 year ago

Please ignore the second reported crash, now it apparently no longer crashes although it doesn't seem to behave quite right in textDocument/completion requests; I will try to investigate.