sammccall added inline comments.

================
Comment at: clang-tools-extra/clangd/ClangdLSPServer.cpp:266
         elog("No reply to message {0}({1})", Method, ID);
         assert(false && "must reply to all calls!");
         (*this)(llvm::make_error<LSPError>("server failed to reply",
----------------
hokein wrote:
> hmm, we will trigger this assertion when clangd exits but not all requests 
> are replied by the client, options:
> 
> 1) remove the assertion here, but the error message "server failed to reply" 
> returned is misleading, in this case, this is a client failure, not server
> 2) make sure that all reply callbacks are called, e.g. run the pending reply 
> callback in destructor (returning an LSP error to client)
> 
The latter is pretty, but may be complicated (shutdown protocol is messy and 
involves receiving multiple messages, what happens if a reply arrives in 
between?)

I would suggest changing the condition here: if the server's destructor has 
started then don't attempt to reply. You can have an atomic<bool> in 
ClangdLSPServer that's set at the top of the destructor


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D65387/new/

https://reviews.llvm.org/D65387



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to