Skip to content

[clangd] Crash on document symbols #141605

Open
Open
@henryhchchc

Description

@henryhchchc

The following C++ code causes a crash in clangd when processing a textDocument/documentSymbol request.

Step to reproduce:

  1. Create a C++ file with the following content
  2. Request for LSP document symbols (an empty query should be fine)

(Generated by fuzzer)

 i CompileDeviceOnly() noexcept(SVE_ACLE_FUNC(svsubltb,_n_s32,,))(T2<0,3>::V) { return 0x10B91; }

using F = int();

const int g(ASTNodeImporter * p) {}

constexpr int n = note_ovl_candidate_bad_list_argument(::~CancelLoop (reinterpret_cast<const char *>( IsPrefix),
                                    SwiftBridgeLength - 1));

The log and stack trace is as follows

I[13:46:50.933] clangd version 20.1.4 (https://github.com/llvm/llvm-project.git ec28b8f9cc7f2ac187d8a617a6d08d5e56f9120e)
I[13:46:50.933] Features: linux+asan
I[13:46:50.933] PID: 2265
I[13:46:50.933] Working directory: /tmp/export0/id_56_time_52438_exec_522013
I[13:46:50.933] argv[0]: /src/build/bin/clangd
I[13:46:50.933] Starting LSP over stdin/stdout
I[13:46:50.935] <-- initialize(0)
I[13:46:50.960] --> reply:initialize(0) 25 ms
Content-Length: 2050

{"id":0,"jsonrpc":"2.0","result":{"capabilities":{"astProvider":true,"callHierarchyProvider":true,"clangdInlayHintsProvider":true,"codeActionProvider":true,"compilationDatabase":{"automaticReload":true},"completionProvider":{"resolveProvider":false,"triggerCharacters":[".","<",">",":","\"","/","*"]},"declarationProvider":true,"definitionProvider":true,"documentFormattingProvider":true,"documentHighlightProvider":true,"documentLinkProvider":{"resolveProvider":false},"documentOnTypeFormattingProvider":{"firstTriggerCharacter":"\n","moreTriggerCharacter":[]},"documentRangeFormattingProvider":true,"documentSymbolProvider":true,"executeCommandProvider":{"commands":["clangd.applyFix","clangd.applyRename","clangd.applyTweak"]},"foldingRangeProvider":true,"hoverProvider":true,"implementationProvider":true,"inactiveRegionsProvider":true,"inlayHintProvider":true,"memoryUsageProvider":true,"referencesProvider":true,"renameProvider":true,"selectionRangeProvider":true,"semanticTokensProvider":{"full":{"delta":true},"legend":{"tokenModifiers":["declaration","definition","deprecated","deduced","readonly","static","abstract","virtual","dependentName","defaultLibrary","usedAsMutableReference","usedAsMutablePointer","constructorOrDestructor","userDefined","functionScope","classScope","fileScope","globalScope"],"tokenTypes":["variable","variable","parameter","function","method","function","property","variable","class","interface","enum","enumMember","type","type","unknown","namespace","typeParameter","concept","type","macro","modifier","operator","bracket","label","comment"]},"range":false},"signatureHelpProvider":{"triggerCharacters":["(",")","{","}","<",">",","]},"standardTypeHierarchyProvider":true,"textDocumentSync":{"change":2,"openClose":true,"save":true},"typeDefinitionProvider":true,"typeHierarchyProvider":true,"workspaceSymbolProvider":true},"serverInfo":{"name":"clangd","version":"clangd version 20.1.4 (https://github.com/llvm/llvm-project.git ec28b8f9cc7f2ac187d8a617a6d08d5e56f9120e) linux+asan x86_64-unknown-linux-gnu"}}}I[13:46:50.960] <-- initialized
I[13:46:50.960] <-- textDocument/didOpen
I[13:46:50.961] <-- textDocument/documentSymbol(15)
I[13:46:50.962] Failed to find compilation database for /tmp/export0/id_56_time_52438_exec_522013/workspace/main.hpp
I[13:46:50.962] ASTWorker building file /tmp/export0/id_56_time_52438_exec_522013/workspace/main.hpp version 1 with command clangd fallback
[/tmp/export0/id_56_time_52438_exec_522013/workspace]
/usr/bin/clang -resource-dir=/src/build/lib/clang/20 -- /tmp/export0/id_56_time_52438_exec_522013/workspace/main.hpp
I[13:46:50.981] Built preamble of size 275544 for file /tmp/export0/id_56_time_52438_exec_522013/workspace/main.hpp version 1 in 0.01 seconds
I[13:46:50.982] --> workspace/semanticTokens/refresh(0)
Content-Length: 82

{"id":0,"jsonrpc":"2.0","method":"workspace/semanticTokens/refresh","params":null}I[13:46:50.985] Indexing c++17 standard library in the context of /tmp/export0/id_56_time_52438_exec_522013/workspace/main.hpp
I[13:46:51.003] --> textDocument/publishDiagnostics
Content-Length: 2308

{"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[{"code":"unknown_typename","message":"Unknown type name 'i'","range":{"end":{"character":2,"line":7},"start":{"character":1,"line":7}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"expected_expression","message":"Expected expression","range":{"end":{"character":63,"line":7},"start":{"character":62,"line":7}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"undeclared_var_use","message":"Use of undeclared identifier 'svsubltb'","range":{"end":{"character":54,"line":7},"start":{"character":46,"line":7}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"undeclared_var_use","message":"Use of undeclared identifier '_n_s32'","range":{"end":{"character":61,"line":7},"start":{"character":55,"line":7}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"no_template","message":"No template named 'T2'","range":{"end":{"character":68,"line":7},"start":{"character":66,"line":7}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"init_conversion_failed","message":"Cannot initialize return object of type 'int (int)' with an rvalue of type 'int'","range":{"end":{"character":94,"line":7},"start":{"character":87,"line":7}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"unknown_typename","message":"Unknown type name 'ASTNodeImporter'","range":{"end":{"character":27,"line":11},"start":{"character":12,"line":11}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"undeclared_destructor_name","message":"Undeclared identifier 'CancelLoop' in destructor name","range":{"end":{"character":68,"line":13},"start":{"character":58,"line":13}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"undeclared_var_use","message":"Use of undeclared identifier 'IsPrefix'","range":{"end":{"character":110,"line":13},"start":{"character":102,"line":13}},"relatedInformation":[],"severity":1,"source":"clang"},{"code":"undeclared_var_use","message":"Use of undeclared identifier 'SwiftBridgeLength'","range":{"end":{"character":53,"line":14},"start":{"character":36,"line":14}},"relatedInformation":[],"severity":1,"source":"clang"}],"uri":"file:///tmp/export0/id_56_time_52438_exec_522013/workspace/main.hpp","version":1}}=================================================================
==2265==ERROR: AddressSanitizer: unknown-crash on address 0x7fff58e33060 at pc 0x000006affb54 bp 0x7fff5a6e3c30 sp 0x7fff5a6e3c28
READ of size 8 at 0x7fff58e33060 thread T130
    #0 0x6affb53 in (anonymous namespace)::StmtPrinter::VisitCharacterLiteral(clang::CharacterLiteral*) /src/clang/lib/AST/StmtPrinter.cpp:1399:62
    #1 0x6affb53 in clang::StmtVisitorBase<std::add_pointer, (anonymous namespace)::StmtPrinter, void>::Visit(clang::Stmt*) /src/build/tools/clang/include/clang/AST/StmtNodes.inc:524:1
    #2 0x6b4cb64 in (anonymous namespace)::StmtPrinter::Visit(clang::Stmt*) /src/clang/lib/AST/StmtPrinter.cpp:150:38
    #3 0x6b4cb64 in (anonymous namespace)::StmtPrinter::PrintExpr(clang::Expr*) /src/clang/lib/AST/StmtPrinter.cpp:136:9
    #4 0x6b4cb64 in (anonymous namespace)::StmtPrinter::PrintCallArgs(clang::CallExpr*) /src/clang/lib/AST/StmtPrinter.cpp:1700:5
    #5 0x6b1b7fe in (anonymous namespace)::StmtPrinter::VisitCallExpr(clang::CallExpr*) /src/clang/lib/AST/StmtPrinter.cpp:1707:3
    #6 0x6afea69 in (anonymous namespace)::StmtPrinter::Visit(clang::Stmt*) /src/clang/lib/AST/StmtPrinter.cpp:150:38
    #7 0x6afea69 in clang::Stmt::printPretty(llvm::raw_ostream&, clang::PrinterHelper*, clang::PrintingPolicy const&, unsigned int, llvm::StringRef, clang::ASTContext const*) const /src/clang/lib/AST/StmtPrinter.cpp:2912:5
    #8 0x6c6ed87 in clang::FunctionProtoType::printExceptionSpecification(llvm::raw_ostream&, clang::PrintingPolicy const&) const /src/clang/lib/AST/TypePrinter.cpp:909:28
    #9 0x6c756bb in (anonymous namespace)::TypePrinter::printFunctionProtoAfter(clang::FunctionProtoType const*, llvm::raw_ostream&) /src/clang/lib/AST/TypePrinter.cpp:1039:6
    #10 0x6c756bb in (anonymous namespace)::TypePrinter::printAfter(clang::Type const*, clang::Qualifiers, llvm::raw_ostream&) /src/build/tools/clang/include/clang/AST/TypeNodes.inc:52:1
    #11 0x6c6f50b in (anonymous namespace)::TypePrinter::print(clang::Type const*, clang::Qualifiers, llvm::raw_ostream&, llvm::StringRef) /src/clang/lib/AST/TypePrinter.cpp:201:3
    #12 0x6c6f239 in clang::QualType::print(clang::Type const*, clang::Qualifiers, llvm::raw_ostream&, clang::PrintingPolicy const&, llvm::Twine const&, unsigned int) /src/clang/lib/AST/TypePrinter.cpp:2658:36
    #13 0x8c083e0 in clang::clangd::(anonymous namespace)::getSymbolDetail[abi:cxx11](clang::ASTContext&, clang::NamedDecl const&) /src/clang-tools-extra/clangd/FindSymbols.cpp:210:21
    #14 0x8c083e0 in clang::clangd::(anonymous namespace)::declToSym(clang::ASTContext&, clang::NamedDecl const&) /src/clang-tools-extra/clangd/FindSymbols.cpp:243:15
    #15 0x8c083e0 in clang::clangd::(anonymous namespace)::DocumentOutline::traverseDecl(clang::Decl*, clang::clangd::(anonymous namespace)::DocumentOutline::SymBuilder&) /src/clang-tools-extra/clangd/FindSymbols.cpp:402:16
    #16 0x8c0303e in clang::clangd::(anonymous namespace)::DocumentOutline::build() /src/clang-tools-extra/clangd/FindSymbols.cpp:376:7
    #17 0x8c0303e in clang::clangd::(anonymous namespace)::collectDocSymbols(clang::clangd::ParsedAST&) /src/clang-tools-extra/clangd/FindSymbols.cpp:630:59
    #18 0x8c0303e in clang::clangd::getDocumentSymbols(clang::clangd::ParsedAST&) /src/clang-tools-extra/clangd/FindSymbols.cpp:653:10
    #19 0x8a55101 in clang::clangd::ClangdServer::documentSymbols(llvm::StringRef, llvm::unique_function<void (llvm::Expected<std::vector<clang::clangd::DocumentSymbol, std::allocator<clang::clangd::DocumentSymbol>>>)>)::$_0::operator()(llvm::Expected<clang::clangd::InputsAndAST>) /src/clang-tools-extra/clangd/ClangdServer.cpp:949:12
    #20 0x8a55101 in void llvm::detail::UniqueFunctionBase<void, llvm::Expected<clang::clangd::InputsAndAST>>::CallImpl<clang::clangd::ClangdServer::documentSymbols(llvm::StringRef, llvm::unique_function<void (llvm::Expected<std::vector<clang::clangd::DocumentSymbol, std::allocator<clang::clangd::DocumentSymbol>>>)>)::$_0>(void*, llvm::Expected<clang::clangd::InputsAndAST>&) /src/llvm/include/llvm/ADT/FunctionExtras.h:222:12
    #21 0x8f9aa72 in llvm::unique_function<void (llvm::Expected<clang::clangd::InputsAndAST>)>::operator()(llvm::Expected<clang::clangd::InputsAndAST>) /src/llvm/include/llvm/ADT/FunctionExtras.h:387:12
    #22 0x8f9aa72 in clang::clangd::(anonymous namespace)::ASTWorker::runWithAST(llvm::StringRef, llvm::unique_function<void (llvm::Expected<clang::clangd::InputsAndAST>)>, clang::clangd::TUScheduler::ASTActionInvalidation)::$_0::operator()() /src/clang-tools-extra/clangd/TUScheduler.cpp:1013:5
    #23 0x8f9aa72 in void llvm::detail::UniqueFunctionBase<void>::CallImpl<clang::clangd::(anonymous namespace)::ASTWorker::runWithAST(llvm::StringRef, llvm::unique_function<void (llvm::Expected<clang::clangd::InputsAndAST>)>, clang::clangd::TUScheduler::ASTActionInvalidation)::$_0>(void*) /src/llvm/include/llvm/ADT/FunctionExtras.h:222:12
    #24 0x8fa8a1f in llvm::function_ref<void ()>::operator()() const /src/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:12
    #25 0x8fa8a1f in clang::clangd::(anonymous namespace)::ASTWorker::runTask(llvm::StringRef, llvm::function_ref<void ()>) /src/clang-tools-extra/clangd/TUScheduler.cpp:1328:3
    #26 0x8fb2990 in clang::clangd::(anonymous namespace)::ASTWorker::run() /src/clang-tools-extra/clangd/TUScheduler.cpp:1462:7
    #27 0x8fb2990 in clang::clangd::(anonymous namespace)::ASTWorker::create(llvm::StringRef, clang::clangd::GlobalCompilationDatabase const&, clang::clangd::TUScheduler::ASTCache&, clang::clangd::TUScheduler::HeaderIncluderCache&, clang::clangd::AsyncTaskRunner*, clang::clangd::Semaphore&, clang::clangd::TUScheduler::Options const&, clang::clangd::ParsingCallbacks&)::$_0::operator()() const /src/clang-tools-extra/clangd/TUScheduler.cpp:826:42
    #28 0x8fb2990 in void llvm::detail::UniqueFunctionBase<void>::CallImpl<clang::clangd::(anonymous namespace)::ASTWorker::create(llvm::StringRef, clang::clangd::GlobalCompilationDatabase const&, clang::clangd::TUScheduler::ASTCache&, clang::clangd::TUScheduler::HeaderIncluderCache&, clang::clangd::AsyncTaskRunner*, clang::clangd::Semaphore&, clang::clangd::TUScheduler::Options const&, clang::clangd::ParsingCallbacks&)::$_0>(void*) /src/llvm/include/llvm/ADT/FunctionExtras.h:222:12
    #29 0x92fc634 in llvm::unique_function<void ()>::operator()() /src/llvm/include/llvm/ADT/FunctionExtras.h:387:12
    #30 0x92fc634 in clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::$_1::operator()() /src/clang-tools-extra/clangd/support/Threading.cpp:101:5
    #31 0x92fc634 in auto void llvm::thread::GenericThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::$_1>>(void*)::'lambda'(auto&&, auto&&...)::operator()<clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::$_1&>(auto&&, auto&&...) const /src/llvm/include/llvm/Support/thread.h:43:11
    #32 0x92fc634 in auto std::__invoke_impl<void, void llvm::thread::GenericThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::$_1>>(void*)::'lambda'(auto&&, auto&&...), clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::$_1&>(std::__invoke_other, void llvm::thread::GenericThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::$_1>>(void*)::'lambda'(auto&&, auto&&...)&&, clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::$_1&) /opt/rh/gcc-toolset-13/root/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/bits/invoke.h:61:14
    #33 0x92fc634 in std::__invoke_result<auto, auto...>::type std::__invoke<void llvm::thread::GenericThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::$_1>>(void*)::'lambda'(auto&&, auto&&...), clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::$_1&>(auto&&, auto&&...) /opt/rh/gcc-toolset-13/root/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/bits/invoke.h:96:14
    #34 0x92fc634 in decltype(auto) std::__apply_impl<void llvm::thread::GenericThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::$_1>>(void*)::'lambda'(auto&&, auto&&...), std::tuple<clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::$_1>&, 0ul>(auto&&, std::tuple<clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::$_1>&, std::integer_sequence<unsigned long, 0ul>) /opt/rh/gcc-toolset-13/root/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/tuple:2302:14
    #35 0x92fc634 in decltype(auto) std::apply<void llvm::thread::GenericThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::$_1>>(void*)::'lambda'(auto&&, auto&&...), std::tuple<clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::$_1>&>(auto&&, std::tuple<clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::$_1>&) /opt/rh/gcc-toolset-13/root/usr/lib/gcc/x86_64-redhat-linux/13/../../../../include/c++/13/tuple:2313:14
    #36 0x92fc634 in void llvm::thread::GenericThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::$_1>>(void*) /src/llvm/include/llvm/Support/thread.h:41:5
    #37 0x92fc634 in void* llvm::thread::ThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::$_1>>(void*) /src/llvm/include/llvm/Support/thread.h:55:5
    #38 0x587695c in asan_thread_start(void*) crtstuff.c
    #39 0x7ffff7b0b7f9 in start_thread (/lib64/libc.so.6+0x897f9) (BuildId: fc46bc419367003d0e4e399cbe22aade4a1ee7be)
    #40 0x7ffff7b9081f in __GI___clone3 (/lib64/libc.so.6+0x10e81f) (BuildId: fc46bc419367003d0e4e399cbe22aade4a1ee7be)

Address 0x7fff58e33060 is located in stack of thread T130 at offset 96 in frame
    #0 0x6afe7cf in clang::Stmt::printPretty(llvm::raw_ostream&, clang::PrinterHelper*, clang::PrintingPolicy const&, unsigned int, llvm::StringRef, clang::ASTContext const*) const /src/clang/lib/AST/StmtPrinter.cpp:2910

  This frame has 3 object(s):
    [32, 48) 'NL.byval'
    [64, 72) '__dnew.i.i.i.i.i'
    [96, 176) 'P' (line 2911) <== Memory access at offset 96 is inside this variable
HINT: this may be a false positive if your program uses some custom stack unwind mechanism, swapcontext or vfork
      (longjmp and C++ exceptions *are* supported)
Thread T130 created by T0 here:
    #0 0x5860115 in pthread_create (/src/build/bin/clangd+0x5860115) (BuildId: 8b31158490359739)
    #1 0x5dfe9a8 in llvm::llvm_execute_on_thread_impl(void* (*)(void*), void*, std::optional<unsigned int>) /src/llvm/lib/Support/Unix/Threading.inc:96:17
    #2 0x92fc2d1 in llvm::thread::thread<clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::$_1>(std::optional<unsigned int>, clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::$_1&&) /src/llvm/include/llvm/Support/thread.h:131:12
    #3 0x92fc2d1 in clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>) /src/clang-tools-extra/clangd/support/Threading.cpp:107:16
    #4 0x8fbbadb in clang::clangd::(anonymous namespace)::ASTWorker::create(llvm::StringRef, clang::clangd::GlobalCompilationDatabase const&, clang::clangd::TUScheduler::ASTCache&, clang::clangd::TUScheduler::HeaderIncluderCache&, clang::clangd::AsyncTaskRunner*, clang::clangd::Semaphore&, clang::clangd::TUScheduler::Options const&, clang::clangd::ParsingCallbacks&) /src/clang-tools-extra/clangd/TUScheduler.cpp:825:12
    #5 0x8fbbadb in clang::clangd::TUScheduler::update(llvm::StringRef, clang::clangd::ParseInputs, clang::clangd::WantDiagnostics) /src/clang-tools-extra/clangd/TUScheduler.cpp:1681:30
    #6 0x8a87efe in clang::clangd::ClangdServer::addDocument(llvm::StringRef, llvm::StringRef, llvm::StringRef, clang::clangd::WantDiagnostics, bool) /src/clang-tools-extra/clangd/ClangdServer.cpp:316:33
    #7 0x89da572 in clang::clangd::ClangdLSPServer::onDocumentDidOpen(clang::clangd::DidOpenTextDocumentParams const&) /src/clang-tools-extra/clangd/ClangdLSPServer.cpp:726:11
    #8 0x8a1710f in void clang::clangd::LSPBinder::notification<clang::clangd::DidOpenTextDocumentParams, clang::clangd::ClangdLSPServer>(llvm::StringLiteral, clang::clangd::ClangdLSPServer*, void (clang::clangd::ClangdLSPServer::*)(clang::clangd::DidOpenTextDocumentParams const&))::'lambda'(llvm::json::Value)::operator()(llvm::json::Value) const /src/clang-tools-extra/clangd/LSPBinder.h:153:5
    #9 0x8a16efe in void llvm::detail::UniqueFunctionBase<void, llvm::json::Value>::CallImpl<void clang::clangd::LSPBinder::notification<clang::clangd::DidOpenTextDocumentParams, clang::clangd::ClangdLSPServer>(llvm::StringLiteral, clang::clangd::ClangdLSPServer*, void (clang::clangd::ClangdLSPServer::*)(clang::clangd::DidOpenTextDocumentParams const&))::'lambda'(llvm::json::Value)>(void*, llvm::json::Value&) /src/llvm/include/llvm/ADT/FunctionExtras.h:222:12
    #10 0x8a3e812 in llvm::unique_function<void (llvm::json::Value)>::operator()(llvm::json::Value) /src/llvm/include/llvm/ADT/FunctionExtras.h:387:12
    #11 0x8a3e812 in clang::clangd::ClangdLSPServer::MessageHandler::onNotify(llvm::StringRef, llvm::json::Value) /src/clang-tools-extra/clangd/ClangdLSPServer.cpp:219:7
    #12 0x8d78847 in clang::clangd::(anonymous namespace)::JSONTransport::handleMessage(llvm::json::Value, clang::clangd::Transport::MessageHandler&) /src/clang-tools-extra/clangd/JSONTransport.cpp:195:18
    #13 0x8d78847 in clang::clangd::(anonymous namespace)::JSONTransport::loop(clang::clangd::Transport::MessageHandler&) /src/clang-tools-extra/clangd/JSONTransport.cpp:119:16
    #14 0x8a49859 in clang::clangd::ClangdLSPServer::run() /src/clang-tools-extra/clangd/ClangdLSPServer.cpp:1741:25
    #15 0x8893149 in clang::clangd::clangdMain(int, char**) /src/clang-tools-extra/clangd/tool/ClangdMain.cpp:1049:28
    #16 0x7ffff7aab5cf in __libc_start_call_main (/lib64/libc.so.6+0x295cf) (BuildId: fc46bc419367003d0e4e399cbe22aade4a1ee7be)

SUMMARY: AddressSanitizer: unknown-crash /src/clang/lib/AST/StmtPrinter.cpp:1399:62 in (anonymous namespace)::StmtPrinter::VisitCharacterLiteral(clang::CharacterLiteral*)
Shadow bytes around the buggy address:
  0x7fff58e32d80: f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5
  0x7fff58e32e00: f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5
  0x7fff58e32e80: f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5
  0x7fff58e32f00: f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5
  0x7fff58e32f80: f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5
=>0x7fff58e33000: f1 f1 f1 f1 00 00 f2 f2 f8 f2 f2 f2[00]00 00 00
  0x7fff58e33080: 00 00 00 00 00 00 f3 f3 f3 f3 f3 f3 00 00 00 00
  0x7fff58e33100: f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5
  0x7fff58e33180: f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5
  0x7fff58e33200: f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5
  0x7fff58e33280: f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==2265==ABORTING

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions