Bug 2151288 - clangd crashes frequently with Qt Creator
Summary: clangd crashes frequently with Qt Creator
Keywords:
Status: NEW
Alias: None
Product: Fedora
Classification: Fedora
Component: llvm
Version: 37
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Tom Stellard
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2022-12-06 15:32 UTC by Alexey Rochev
Modified: 2023-08-04 08:31 UTC (History)
12 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed:
Type: Bug
Embargoed:


Attachments (Terms of Use)
crash log (55.34 KB, text/plain)
2022-12-06 15:33 UTC, Alexey Rochev
no flags Details

Description Alexey Rochev 2022-12-06 15:32:45 UTC
Description of problem:
When editing C++ code in Qt Creator, clangd frequently crashes with SIGABRT.

Version-Release number of selected component (if applicable):
clang-tools-extra-15.0.4-1.fc37.x86_64
qt-creator-0:8.0.1-5.fc37.x86_64

How reproducible:
I wasn't able to find minimal reproducible example, but it happens often enough (once a day at least).

Comment 1 Alexey Rochev 2022-12-06 15:33:08 UTC
Created attachment 1930493 [details]
crash log

Comment 2 Alexey Rochev 2022-12-06 16:02:06 UTC
Here is another stack trace from gdb (from crash dump):

#0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#1  0x00007f8f290afee3 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2  0x00007f8f2905faa6 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3  0x00007f8f29049886 in __GI_abort () at abort.c:100
#4  0x00007f8f292d7e80 in std::__glibcxx_assert_fail (file=<optimized out>, line=<optimized out>, function=<optimized out>, condition=<optimized out>) at ../../../../../libstdc++-v3/src/c++11/debug.cc:60
#5  0x00007f8f32e0bc7c in clang::syntax::TokenBuffer::spelledForExpandedToken (this=0x7f8ef9648b50, Expanded=<optimized out>) at /usr/src/debug/clang-15.0.4-1.fc37.x86_64/lib/Tooling/Syntax/Tokens.cpp:357
#6  0x00007f8f32e0c313 in clang::syntax::TokenBuffer::spelledForExpanded (this=0x7f8ef9648b50, Expanded=...) at /usr/src/debug/clang-15.0.4-1.fc37.x86_64/lib/Tooling/Syntax/Tokens.cpp:466
#7  0x0000560b2b3118db in clang::clangd::(anonymous namespace)::DumpVisitor::TraverseDecl(clang::Decl*) ()
#8  0x0000560b2b3178ab in clang::RecursiveASTVisitor<clang::clangd::(anonymous namespace)::DumpVisitor>::TraverseNamespaceDecl(clang::NamespaceDecl*) ()
#9  0x0000560b2b311efb in clang::clangd::(anonymous namespace)::DumpVisitor::TraverseDecl(clang::Decl*) ()
#10 0x0000560b2b320698 in clang::RecursiveASTVisitor<clang::clangd::(anonymous namespace)::DumpVisitor>::TraverseTranslationUnitDecl(clang::TranslationUnitDecl*) ()
#11 0x0000560b2b311dfb in clang::clangd::(anonymous namespace)::DumpVisitor::TraverseDecl(clang::Decl*) ()
#12 0x0000560b2b310ed3 in clang::clangd::dumpAST(clang::DynTypedNode const&, clang::syntax::TokenBuffer const&, clang::ASTContext const&) ()
#13 0x0000560b2b2cc1bb in void llvm::detail::UniqueFunctionBase<void, llvm::Expected<clang::clangd::InputsAndAST> >::CallImpl<clang::clangd::ClangdServer::getAST(llvm::StringRef, llvm::Optional<clang::clangd::Range>, llvm::unique_function<void (llvm::Expected<llvm::Optional<clang::clangd::ASTNode> >)>)::$_34>(void*, llvm::Expected<clang::clangd::InputsAndAST>&) ()
#14 0x0000560b2b4c5443 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)::$_8>(void*) ()
#15 0x0000560b2b4bb375 in clang::clangd::(anonymous namespace)::ASTWorker::runTask(llvm::StringRef, llvm::function_ref<void ()>) ()
#16 0x0000560b2b4bae41 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&)::$_5>(void*) ()
#17 0x0000560b2b64b54e in void* llvm::thread::ThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::$_4> >(void*) ()
#18 0x00007f8f290ae14d in start_thread (arg=<optimized out>) at pthread_create.c:442
#19 0x00007f8f2912fa00 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

This crash happened when I tried to comment something out inside function parameter list, like this: configuration.serverUrl.setPath(/*server.apiPath*/)

Comment 3 Alexey Rochev 2022-12-06 16:03:17 UTC
BTW similar crashes happened to me on Fedora 36 too, with LLVM 14.

Comment 4 Alexey Rochev 2022-12-13 20:44:14 UTC
Following code causes it to enter endless crash loop: "#if QT_VERSION_CHECK()"


Note You need to log in before you can comment on or make changes to this bug.