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