Skip to content

Crash when turning on --experimental-modules-support option parsing files without compile_commands.json #168670

@ShelpAm

Description

@ShelpAm

Step to reproduce

  1. Configure your clangd to start by clangd --experimental-modules-support.
  2. Open a file with no corresponding compile_commands.json file.
  3. Try start your clangd.
  4. And clangd will crash.

The crashing log of clangd

[ERROR][2025-11-19 14:36:27] ...p/_transport.lua:36	"rpc"	"clangd"	"stderr"	"PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.\n #0 0x0000000000508e47 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /__w/clangd/clangd/llvm-project/llvm/lib/Support/Unix/Signals.inc:834:13\n #1 0x0000000000506885 llvm::sys::RunSignalHandlers() /__w/clangd/clangd/llvm-project/llvm/lib/Support/Signals.cpp:105:18\n #2 0x0000000000509daa SignalHandler(int, siginfo_t*, void*) /__w/clangd/clangd/llvm-project/llvm/lib/Support/Unix/Signals.inc:426:38\n #3 0x00007f3fb7b252c0 __restore_rt (/lib64/libc.so.6+0x1a2c0)\n #4 0x00000000015103ca clang::clangd::OverlayCDB::getProjectModules(llvm::StringRef) const /__w/clangd/clangd/llvm-project/clang-tools-extra/clangd/GlobalCompilationDatabase.cpp:836:8\n #5 0x0000000001551f29 _M_ptr /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:154:42\n #6 0x0000000001551f29 get /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:361:21\n #7 0x0000000001551f29 operator bool /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:375:16\n #8 0x0000000001551f29 clang::clangd::ModulesBuilder::buildPrerequisiteModulesFor(llvm::StringRef, clang::clangd::ThreadsafeFS const&) /__w/clangd/clangd/llvm-project/clang-tools-extra/clangd/ModulesBuilder.cpp:560:8\n #9 0x0000000001584806 _M_ptr /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:154:42\n#10 0x0000000001584806 get /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:361:21\n#11 0x0000000001584806 release /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:383:16\n#12 0x0000000001584806 operator= /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/unique_ptr.h:307:12\n#13 0x0000000001584806 clang::clangd::buildPreamble(llvm::StringRef, clang::CompilerInvocation, clang::clangd::ParseInputs const&, bool, std::function<void (clang::clangd::CapturedASTCtx, std::shared_ptr<clang::include_cleaner::PragmaIncludes const>)>, clang::clangd::PreambleBuildStats*) /__w/clangd/clangd/llvm-project/clang-tools-extra/clangd/Preamble.cpp:701:31\n#14 0x00000000015f6f1b clang::clangd::(anonymous namespace)::PreambleThread::build(clang::clangd::(anonymous namespace)::PreambleThread::Request) /__w/clangd/clangd/llvm-project/clang-tools-extra/clangd/TUScheduler.cpp:1089:17\n#15 0x00000000015f676f ~__shared_count /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/shared_ptr_base.h:729:6\n#16 0x00000000015f676f ~__shared_ptr /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/shared_ptr_base.h:1169:31\n#17 0x00000000015f676f ~Context /__w/clangd/clangd/llvm-project/clang-tools-extra/clangd/support/Context.h:69:7\n#18 0x00000000015f676f ~Request /__w/clangd/clangd/llvm-project/clang-tools-extra/clangd/TUScheduler.cpp:556:10\n#19 0x00000000015f676f run /__w/clangd/clangd/llvm-project/clang-tools-extra/clangd/TUScheduler.cpp:513:9\n#20 0x00000000015f676f operator() /__w/clangd/clangd/llvm-project/clang-tools-extra/clangd/TUScheduler.cpp:828:55\n#21 0x00000000015f676f 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&)::$_10>(void*) /__w/clangd/clangd/llvm-project/llvm/include/llvm/ADT/FunctionExtras.h:222:12\n#22 0x000000000176d626 operator= /__w/clangd/clangd/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:48:5\n#23 0x000000000176d626 PunnedPointer /__w/clangd/clangd/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:37:60\n#24 0x000000000176d626 PointerIntPair /__w/clangd/clangd/llvm-project/llvm/include/llvm/ADT/PointerIntPair.h:86:13\n#25 0x000000000176d626 UniqueFunctionBase /__w/clangd/clangd/llvm-project/llvm/include/llvm/ADT/FunctionExtras.h:343:3\n#26 0x000000000176d626 unique_function /__w/clangd/clangd/llvm-project/llvm/include/llvm/ADT/FunctionExtras.h:372:3\n#27 0x000000000176d626 operator() /__w/clangd/clangd/llvm-project/clang-tools-extra/clangd/support/Threading.cpp:103:14\n#28 0x000000000176d626 operator()<(lambda at /__w/clangd/clangd/llvm-project/clang-tools-extra/clangd/support/Threading.cpp:98:15) &> /__w/clangd/clangd/llvm-project/llvm/include/llvm/Support/thread.h:46:11\n#29 0x000000000176d626 __invoke_impl<void, (lambda at /__w/clangd/clangd/llvm-project/llvm/include/llvm/Support/thread.h:45:9), (lambda at /__w/clangd/clangd/llvm-project/clang-tools-extra/clangd/support/Threading.cpp:98:15) &> /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/invoke.h:60:14\n#30 0x000000000176d626 __invoke<(lambda at /__w/clangd/clangd/llvm-project/llvm/include/llvm/Support/thread.h:45:9), (lambda at /__w/clangd/clangd/llvm-project/clang-tools-extra/clangd/support/Threading.cpp:98:15) &> /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/invoke.h:95:14\n#31 0x000000000176d626 __apply_impl<(lambda at /__w/clangd/clangd/llvm-project/llvm/include/llvm/Support/thread.h:45:9), std::tuple<(lambda at /__w/clangd/clangd/llvm-project/clang-tools-extra/clangd/support/Threading.cpp:98:15)> &, 0> /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/tuple:1684:14\n#32 0x000000000176d626 apply<(lambda at /__w/clangd/clangd/llvm-project/llvm/include/llvm/Support/thread.h:45:9), std::tuple<(lambda at /__w/clangd/clangd/llvm-project/clang-tools-extra/clangd/support/Threading.cpp:98:15)> &> /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/tuple:1694:14\n#33 0x000000000176d626 GenericThreadProxy<std::tuple<(lambda at /__w/clangd/clangd/llvm-project/clang-tools-extra/clangd/support/Threading.cpp:98:15)> > /__w/clangd/clangd/llvm-project/llvm/include/llvm/Support/thread.h:44:5\n#34 0x000000000176d626 void* llvm::thread::ThreadProxy<std::tuple<clang::clangd::AsyncTaskRunner::runAsync(llvm::Twine const&, llvm::unique_function<void ()>)::$_1>>(void*) /__w/clangd/clangd/llvm-project/llvm/include/llvm/Support/thread.h:58:5\n#35 0x00007f3fb7b7d464 start_thread (/lib64/libc.so.6+0x72464)\n#36 0x00007f3fb7c005ac __GI___clone3 (/lib64/libc.so.6+0xf55ac)\nSignalled while building preamble\n  Filename: a.cpp\n  Directory: /home/shelpam\n  Command Line: /usr/bin/clang -Wall -Wextra -Wpedantic -Wmisleading-indentation -Wunused -Wuninitialized -Wshadow -Wconversion -resource-dir=/home/shelpam/.local/share/nvim/mason/packages/clangd/clangd_21.1.0/lib/clang/21 -- /home/shelpam/a.cpp\n  Version: 0\n"

Metadata

Metadata

Assignees

No one assigned

    Labels

    clang:modulesC++20 modules and Clang Header ModulesclangdcrashPrefer [crash-on-valid] or [crash-on-invalid]duplicateResolved as duplicate

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions