nim-lang/langserver

segfaults in stable `1.6.8`

scarf005 opened this issue · 10 comments

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.

can you compile nimlangserver with debug flags?

 ~/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

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 5505c41 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?

@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?

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?

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?

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

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

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 [...]

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.