[clangd] Assertion `llvm::sys::path::is_absolute(Path)' failed.` when dictionary and file use relative path
- Dominant language
- LLVM
- Stars
- 40.5k
- Forks
- 18.7k
- PR merge metrics
- PR metrics pending
Description
This input is generated by a fuzzer.
```json
[
{
"directory": ".",
"command": "clang++ t1.cpp",
"file": "t1.cpp"
}
]
```
The file's content is not important.
When both pathes are relative, it crahes. Otherwise, it doesnt't crash.
stacktrace
```
#0 0x00005bae371af5e2 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /tmp/llvm-project-main-20260608-latest/llvm/lib/Support/Unix/Signals.inc:885:3
#1 0x00005bae371ac35c llvm::sys::RunSignalHandlers() /tmp/llvm-project-main-20260608-latest/llvm/lib/Support/Signals.cpp:108:20
#2 0x00005bae371acbd1 SignalHandler(int, siginfo_t*, void*) /tmp/llvm-project-main-20260608-latest/llvm/lib/Support/Unix/Signals.inc:448:14
#3 0x00007eff0ba45330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
#4 0x00007eff0ba9eb2c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x00007eff0ba9eb2c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x00007eff0ba9eb2c pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x00007eff0ba4527e raise ./signal/../sysdeps/posix/raise.c:27:6
#8 0x00007eff0ba288ff abort ./stdlib/abort.c:81:7
#9 0x00007eff0ba2881b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x00007eff0ba3b517 (/lib/x86_64-linux-gnu/libc.so.6+0x3b517)
#11 0x00005bae38a847d6 clang::clangd::absoluteParent(llvm::StringRef) /tmp/llvm-project-main-20260608-latest/clang-tools-extra/clangd/support/Path.cpp:34:1
#12 0x00005bae3875c585 clang::clangd::(anonymous namespace)::actOnAllParentDirectories(llvm::StringRef, llvm::function_ref) /tmp/llvm-project-main-20260608-latest/clang-tools-extra/clangd/GlobalCompilationDatabase.cpp:49:60
#13 0x00005bae3876307b memcpy /usr/include/x86_64-linux-gnu/bits/string_fortified.h:29:33
#14 0x00005bae3876307b llvm::detail::PunnedPointer::asInt() const /tmp/llvm-project-main-20260608-latest/llvm/include/llvm/ADT/PointerIntPair.h:41:16
#15 0x00005bae3876307b llvm::detail::PunnedPointer::operator long() const /tmp/llvm-project-main-20260608-latest/llvm/include/llvm/ADT/PointerIntPair.h:45:53
#16 0x00005bae3876307b llvm::PointerIntPair, llvm::PointerIntPairInfo>>::setPointer(clang::clangd::DirectoryBasedGlobalCompilationDatabase::BroadcastThread::Filter::DirInfo*) & /tmp/llvm-project-main-20260608-latest/llvm/include/llvm/ADT/PointerIntPair.h:99:11
#17 0x00005bae3876307b clang::clangd::DirectoryBasedGlobalCompilationDatabase::BroadcastThread::Filter::filter(std::vector, std::allocator>, std::allocator, std::allocator>>>, std::atomic&) /tmp/llvm-project-main-20260608-latest/clang-tools-extra/clangd/GlobalCompilationDatabase.cpp:710:34
#18 0x00005bae3876367b std::vector, std::allocator>, std::allocator, std::allocator>>>::~vector() /usr/include/c++/13/bits/stl_vector.h:735:15
#19 0x00005bae3876367b clang::clangd::DirectoryBasedGlobalCompilationDatabase::BroadcastThread::process(clang::clangd::DirectoryBasedGlobalCompilationDatabase::CDBLookupResult const&) /tmp/llvm-project-main-20260608-latest/clang-tools-extra/clangd/GlobalCompilationDatabase.cpp:734:64
#20 0x00005bae38763ae6 std::__shared_ptr::__shared_ptr(std::__shared_ptr&&) /usr/include/c++/13/bits/shared_ptr_base.h:1532:9
#21 0x00005bae38763ae6 std::shared_ptr::shared_ptr(std::shared_ptr&&) /usr/include/c++/13/bits/shared_ptr.h:360:41
#22 0x00005bae38763ae6 clang::clangd::Context::Context(clang::clangd::Context&&) /tmp/llvm-project-main-20260608-latest/clang-tools-extra/clangd/support/Context.h:92:3
#23 0x00005bae38763ae6 clang::clangd::WithContext::~WithContext() /tmp/llvm-project-main-20260608-latest/clang-tools-extra/clangd/support/Context.h:188:40
#24 0x00005bae38763ae6 clang::clangd::DirectoryBasedGlobalCompilationDatabase::BroadcastThread::run() /tmp/llvm-project-main-20260608-latest/clang-tools-extra/clangd/GlobalCompilationDatabase.cpp:525:7
#25 0x00007eff0beecdb4 (/lib/x86_64-linux-gnu/libstdc++.so.6+0xecdb4)
#26 0x00007eff0ba9caa4 start_thread ./nptl/pthread_create.c:447:8
#27 0x00007eff0bb29c6c clone3 ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:80:0
```
Contributor guide
Assessment
This issue has not been assessed yet.