[clangd][clangd]Assertion `!VD->mightBeUsableInConstantExpressions(Info.Ctx)' failed in ExprConstant::LValueExprEvaluator
- Dominant language
- LLVM
- Stars
- 40.5k
- Forks
- 18.7k
- PR merge metrics
- PR metrics pending
Description
This input is generated by a fuzzer.
```cxx
struct A
{
virtual int foo();
};
void baz (int);
template
void
bar(T x)
{
A &b = *x;
baz (bar.foo ());
}
void
foo()
{
A &x = *x;
bar(&x);
}
```
use the command
```
clangd --check
```
to reproduce
stacktrace
```
#0 0x000058838f9168f2 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /tmp/llvm-project-main-20260504/llvm/lib/Support/Unix/Signals.inc:884:3
#1 0x000058838f91366c llvm::sys::RunSignalHandlers() /tmp/llvm-project-main-20260504/llvm/lib/Support/Signals.cpp:108:20
#2 0x000058838f913ee1 SignalHandler(int, siginfo_t*, void*) /tmp/llvm-project-main-20260504/llvm/lib/Support/Unix/Signals.inc:448:14
#3 0x000072f788245330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
#4 0x000072f78829eb2c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x000072f78829eb2c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x000072f78829eb2c pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x000072f78824527e raise ./signal/../sysdeps/posix/raise.c:27:6
#8 0x000072f7882288ff abort ./stdlib/abort.c:81:7
#9 0x000072f78822881b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x000072f78823b517 (/lib/x86_64-linux-gnu/libc.so.6+0x3b517)
#11 0x000058838fb6ac86 (/tmp/build-assert-clangd-main-20260506/bin/clangd+0x6dcc86)
#12 0x000058838fb6ae22 (anonymous namespace)::LValueExprEvaluator::VisitVarDecl(clang::Expr const*, clang::VarDecl const*) /tmp/llvm-project-main-20260504/clang/lib/AST/ExprConstant.cpp:9451:3
#13 0x000058838fb88851 EvaluateLValue(clang::Expr const*, (anonymous namespace)::LValue&, (anonymous namespace)::EvalInfo&, bool) /tmp/llvm-project-main-20260504/clang/lib/AST/ExprConstant.cpp:9372:1
#14 0x000058838fbc28c7 Evaluate(clang::APValue&, (anonymous namespace)::EvalInfo&, clang::Expr const*) /tmp/llvm-project-main-20260504/clang/lib/AST/ExprConstant.cpp:20998:5
#15 0x000058838fbc33b9 EvaluateAsRValue((anonymous namespace)::EvalInfo&, clang::Expr const*, clang::APValue&) /tmp/llvm-project-main-20260504/clang/lib/AST/ExprConstant.cpp:21130:3
#16 0x000058838fbc37af llvm::SmallVectorBase::size() const /tmp/llvm-project-main-20260504/llvm/include/llvm/ADT/SmallVector.h:83:32
#17 0x000058838fbc37af end /tmp/llvm-project-main-20260504/llvm/include/llvm/ADT/SmallVector.h:278:41
#18 0x000058838fbc37af discardCleanups /tmp/llvm-project-main-20260504/clang/lib/AST/ExprConstant.cpp:1076:25
#19 0x000058838fbc37af ~EvalInfo /tmp/llvm-project-main-20260504/clang/lib/AST/ExprConstant.cpp:931:22
#20 0x000058838fbc37af clang::Expr::EvaluateAsRValue(clang::Expr::EvalResult&, clang::ASTContext const&, bool) const /tmp/llvm-project-main-20260504/clang/lib/AST/ExprConstant.cpp:21263:1
#21 0x0000588390ecc640 clang::clangd::(anonymous namespace)::printExprValue(clang::Expr const*, clang::ASTContext const&) /tmp/llvm-project-main-20260504/clang-tools-extra/clangd/Hover.cpp:450:29
#22 0x0000588390eccc0b clang::clangd::(anonymous namespace)::printExprValue(clang::clangd::SelectionTree::Node const*, clang::ASTContext const&) /tmp/llvm-project-main-20260504/clang-tools-extra/clangd/Hover.cpp:501:7
#23 0x0000588390edac51 std::_Optional_base_impl>::_M_get() /usr/include/c++/13/optional:479:2
#24 0x0000588390edac51 std::optional::operator->() /usr/include/c++/13/optional:968:45
#25 0x0000588390edac51 clang::clangd::getHover(clang::clangd::ParsedAST&, clang::clangd::Position, clang::format::FormatStyle const&, clang::clangd::SymbolIndex const*) /tmp/llvm-project-main-20260504/clang-tools-extra/clangd/Hover.cpp:1390:13
#26 0x0000588390cfc10d llvm::support::detail::provider_format_adapter::provider_format_adapter(llvm::support::detail::provider_format_adapter&&) /tmp/llvm-project-main-20260504/llvm/include/llvm/Support/FormatVariadicDetails.h:35:29
#27 0x0000588390cfc10d std::_Head_base<0ul, llvm::support::detail::provider_format_adapter, false>::_Head_base(std::_Head_base<0ul, llvm::support::detail::provider_format_adapter, false>&&) /usr/include/c++/13/tuple:197:17
#28 0x0000588390cfc10d std::_Tuple_impl<0ul, llvm::support::detail::provider_format_adapter>::_Tuple_impl(std::_Tuple_impl<0ul, llvm::support::detail::provider_format_adapter>&&) /usr/include/c++/13/tuple:529:41
#29 0x0000588390cfc10d std::tuple>::tuple(std::tuple>&&) /usr/include/c++/13/tuple:903:17
#30 0x0000588390cfc10d llvm::formatv_object>>::formatv_object(llvm::StringRef, std::tuple>&&, bool) /tmp/llvm-project-main-20260504/llvm/include/llvm/Support/FormatVariadic.h:146:9
#31 0x0000588390cfc10d auto llvm::formatv(bool, char const*, bool&&) /tmp/llvm-project-main-20260504/llvm/include/llvm/Support/FormatVariadic.h:252:75
#32 0x0000588390cfc10d auto llvm::formatv(char const*, bool&&) /tmp/llvm-project-main-20260504/llvm/include/llvm/Support/FormatVariadic.h:257:61
#33 0x0000588390cfc10d void clang::clangd::detail::log(clang::clangd::Logger::Level, char const*, bool&&) /tmp/llvm-project-main-20260504/clang-tools-extra/clangd/support/Logger.h:48:18
#34 0x0000588390cfc10d void clang::clangd::vlog(char const*, bool&&) /tmp/llvm-project-main-20260504/clang-tools-extra/clangd/support/Logger.h:73:14
#35 0x0000588390cfc10d testLocationFeatures /tmp/llvm-project-main-20260504/clang-tools-extra/clangd/tool/Check.cpp:448:11
#36 0x0000588390cfc10d clang::clangd::check(llvm::StringRef, clang::clangd::ThreadsafeFS const&, clang::clangd::ClangdLSPServer::Options const&) /tmp/llvm-project-main-20260504/clang-tools-extra/clangd/tool/Check.cpp:530:27
#37 0x0000588390cf0bbb clang::clangd::clangdMain(int, char**) /tmp/llvm-project-main-20260504/clang-tools-extra/clangd/tool/ClangdMain.cpp:1039:16
#38 0x000072f78822a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#39 0x000072f78822a28b call_init ./csu/../csu/libc-start.c:128:20
#40 0x000072f78822a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#41 0x000058838f7fed95 _start (/tmp/build-assert-clangd-main-20260506/bin/clangd+0x370d95)
Aborted (core dumped)
```
Contributor guide
Assessment
This issue has not been assessed yet.