<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/112220>112220</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang-tidy: Error evaluating statement (LLVM 18.1.8 from Fedora 40)
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang-tidy
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
jeanthom
</td>
</tr>
</table>
<pre>
Hi, I'm running into an issue with clang-tidy on Fedora 40 where it crashes while parsing my C++23 project. Here's the crash stack:
```
stack dump:
0. Program arguments: clang-tidy -p "redacted_prj_folder/build" "redacted_prj_folder/src/gui/MainWindow.cpp"
1. <eof> parser at end of file
2. While analyzing stack:
#0 Calling qtToNativeValue(RedactedEnumClass, const QVariant &) at line 247
#1 Calling MainWindow::redacted_method_name(const QImage &)
3. ../src/gui/MainWindow.cpp:33:31: Error evaluating statement
4. ../src/gui/MainWindow.cpp:33:31: Error evaluating statement
#0 0x00007f0cd1a044fa llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/lib64/libLLVM.so.18.1+0x6044fa)
#1 0x00007f0cd1a01ce4 llvm::sys::RunSignalHandlers() (/lib64/libLLVM.so.18.1+0x601ce4)
#2 0x00007f0cd1a04c5b (/lib64/libLLVM.so.18.1+0x604c5b)
#3 0x00007f0cd0e4fd00 __restore_rt (/lib64/libc.so.6+0x40d00)
#4 0x00007f0cd8e4656e clang::CXXMethodDecl::getThisType(clang::FunctionProtoType const*, clang::CXXRecordDecl const*) (/lib64/libclang-cpp.so.18.1+0x84656e)
#5 0x00007f0cdb14b07d clang::ento::ExprEngine::handleConstructor(clang::Expr const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&) (/lib64/libclang-cpp.so.18.1+0x2b4b07d)
#6 0x00007f0cdb12ad0a clang::ento::ExprEngine::Visit(clang::Stmt const*, clang::ento::ExplodedNode*, clang::ento::ExplodedNodeSet&) (/lib64/libclang-cpp.so.18.1+0x2b2ad0a)
#7 0x00007f0cdb1280bb clang::ento::ExprEngine::ProcessStmt(clang::Stmt const*, clang::ento::ExplodedNode*) (/lib64/libclang-cpp.so.18.1+0x2b280bb)
#8 0x00007f0cdb127da0 clang::ento::ExprEngine::processCFGElement(clang::CFGElement, clang::ento::ExplodedNode*, unsigned int, clang::ento::NodeBuilderContext*) (/lib64/libclang-cpp.so.18.1+0x2b27da0)
#9 0x00007f0cdb10cc19 clang::ento::CoreEngine::dispatchWorkItem(clang::ento::ExplodedNode*, clang::ProgramPoint, clang::ento::WorkListUnit const&) (/lib64/libclang-cpp.so.18.1+0x2b0cc19)
#10 0x00007f0cdb10c6dd clang::ento::CoreEngine::ExecuteWorkList(clang::LocationContext const*, unsigned int, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>) (/lib64/libclang-cpp.so.18.1+0x2b0c6dd)
#11 0x00007f0cdb5af2c9 (/lib64/libclang-cpp.so.18.1+0x2faf2c9)
#12 0x00007f0cdb58a9dd (/lib64/libclang-cpp.so.18.1+0x2f8a9dd)
#13 0x00007f0cdae538ec clang::MultiplexConsumer::HandleTranslationUnit(clang::ASTContext&) (/lib64/libclang-cpp.so.18.1+0x28538ec)
#14 0x00007f0cd8b743e6 clang::ParseAST(clang::Sema&, bool, bool) (/lib64/libclang-cpp.so.18.1+0x5743e6)
#15 0x00007f0cdae1c816 clang::FrontendAction::Execute() (/lib64/libclang-cpp.so.18.1+0x281c816)
#16 0x00007f0cdad94520 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/lib64/libclang-cpp.so.18.1+0x2794520)
#17 0x00007f0cdb031721 clang::tooling::FrontendActionFactory::runInvocation(std::shared_ptr<clang::CompilerInvocation>, clang::FileManager*, std::shared_ptr<clang::PCHContainerOperations>, clang::DiagnosticConsumer*) (/lib64/libclang-cpp.so.18.1+0x2a31721)
#18 0x000055b4f1ce302e (/usr/bin/clang-tidy+0x102902e)
#19 0x00007f0cdb0313e4 clang::tooling::ToolInvocation::runInvocation(char const*, clang::driver::Compilation*, std::shared_ptr<clang::CompilerInvocation>, std::shared_ptr<clang::PCHContainerOperations>) (/lib64/libclang-cpp.so.18.1+0x2a313e4)
#20 0x00007f0cdb030164 clang::tooling::ToolInvocation::run() (/lib64/libclang-cpp.so.18.1+0x2a30164)
#21 0x00007f0cdb033315 clang::tooling::ClangTool::run(clang::tooling::ToolAction*) (/lib64/libclang-cpp.so.18.1+0x2a33315)
#22 0x000055b4f1cde3da clang::tidy::runClangTidy(clang::tidy::ClangTidyContext&, clang::tooling::CompilationDatabase const&, llvm::ArrayRef<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>, bool, bool, llvm::StringRef) (/usr/bin/clang-tidy+0x10243da)
#23 0x000055b4f0ecf06c clang::tidy::clangTidyMain(int, char const**) (/usr/bin/clang-tidy+0x21506c)
#24 0x00007f0cd0e39088 __libc_start_call_main (/lib64/libc.so.6+0x2a088)
#25 0x00007f0cd0e3914b __libc_start_main@GLIBC_2.2.5 (/lib64/libc.so.6+0x2a14b)
#26 0x000055b4f0ecb245 _start (/usr/bin/clang-tidy+0x211245)
```
This seems to be the offending piece of code (MainWindow.cpp:33):
```c++
std::variant<redacted> qtToNativeValue(RedactedEnumClass attribute, const QVariant& value)
{
...
QByteArray ba;
QBuffer buffer(&ba);
buffer.open(QIODevice::WriteOnly);
image.save(&buffer, "PNG");
BinaryPayload payload(std::vector<unsigned char>(ba.begin(), ba.end())); // Line 33
...
}
```
Non-redacted BinaryPayload definition:
```c++
class BinaryPayload : public std::vector<unsigned char> {
};
```
A few version infos that may be useful:
```
$ clang-tidy --version
LLVM (http://llvm.org/):
LLVM version 18.1.8
Optimized build.
$ cat /etc/fedora-release
Fedora release 40 (Forty)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMWVFzo7jS_TXKiyqUEGDjBz84TryTqmQmO8k3s28uIRpbuyD5k4QT76-_JYFt5I0zTt19uKlUCCCOzuludTeCGSNWEmCKshuU3V6x1q6Vnv4JTNq1aq4KVe6mXwSic3yP6LjBupVSyBUW0irMJBbGtIBfhV1jXjO5urai3GEl8QJKpRlOCX5dgwYsLOaamTUY_LoWNeAN08YhNTs8R_QG0Rua4I1WfwK3Ef4CGhAdG2zX0D2IjWX8L5TMELlFZP93RPpff-qH4LJtNodxJEJk8qTVSrMGM71qG5DWoGQ25Hu9wYhSDSXjFsrlRv-5rFRdgkZ0UbSiLhGl50cYzRFdrFqB6OKRCflTyFK9RnyzQZR2LGLHAiVzUBVK7rx20JhZDLLEqsKVqKEbSd3In95CTLJ697ez0V463mufIJoQPGd17W7_v31RX5kVW_jB6hYQzb_3RO9k28xrZozzIFfSWPz7D6YFkxYjOkJ04kjUQgKm6XiIHh_Qj5KcUZPZwQgN2LUql5I1bsoe_b5hK-ixO7zEKYqijw2VzJLE_YmdyjutlcawZXXLbK_fgnNch5j-64jY25O8EULIuCK8jBlJ04rhut42nWyzM90_T1pI--w88qIZd9KPgzR7XSpjNbDGm2DuFoqzMqI5ootaFKO0Oz48_HiMjIriPIoRvSFvIz_hwWrY-yBkFHNI32P0vZXPYiVZ_YXJsgZt_GyXTeowg0npqRl4VlxGn2dFgJQMkQikVUkIXi41GKs0LLX9Jyx3mCMPmJKSkAAvHeLlkI6yEXSruDPD_I8_Hn1I3gKvu0srsC9rYV52Gx-ix7GLVnIrlHzSyip3u1sdiM78SglAvwNX2oMOBr1j3S6h8M0mMEzueQZCsqGQIk4LMi6Hc4K0qvvv7m2j7-RKSOjO197Bc8dCt9wqHapyw88JCUBrVUL5VZVw6bhnsH2-uFA2LbysQPco1E1ZSdhlun8II2yo9dk29n9Gq5cSaB2faM1JUVym9UkrDsY4ff-K4s_IcCwDGfmJjHHJyGUyNp2M-eK3u7rLtIGY4fXLfddK36-UXVo985wbf-OqNui5khbePrliaeFlBnaYhHYgnMeT92efKw1DO5TCbJjl659K_3VvoQnNcGmk9h3Mk_pIuJviQRj7f1IcAuVzcex1HYS7EkROhY_KM7nqVPjdG_DWwp5UqPtBcebyb--gIKxPnXysePfS6taILXyHai7tk9Uomb9LprfXsyvzPXhy90lTjMoyMEVQjouMVZRfjlf54QEeDfFyNinLy_H88AAvqLcMsiQHPnTVY1tbsanhzdWPtgHdXe6ahhfNpKm9T1z4hN6aPb8cVtKnAir3JAKWYRUvxmkCoyDSXW88e345yX3QsL6jKpSqj8eLuWR-poBKFhos5nkcUFloJ1qWM98qBFF9rsM6ZwePHUweFENWTtKMBpl1rpqNqEHfS2OZ5OGi6hmFLU3I9nOOGvv5A4JhBSNJPKbxkKBVyr0fvDf5grneZNf3xK28l9t-vSOaG1v2_euaafcudbqKj8oPT7m1GyS9hajhkUm2cm9gPmv8EvZp_sUFMRMS9LcNaI9s_gl9K9hKKmMFP6yTz5UP5k0V2HJfRrOsSKuYQ0Io9Hit8W-ZQiK6OL6SeqSY0AmhECBNTr2SQHrWKy9K1UMrvucOvmZne8ZSi-0-TXRe6Z-6zOJnHfnf-OpTfkgGLzfu3YacWI_Eo09b75NLn_lJAhbxCYvEpaJzLObuuqMyJPAR5f36_2TMOhIBSxrGbAlJGXTrPkz3nDqWPnDzd8ccBgwLyfy86mO03TLLCmZg0NEMe4KZ1mz3HSqUzA9htVzyt7c47k4KZgRfGqs9-NzFexCD7sLSaias2d8-iVJW1y4IlB7c735_3Z0cb2-r_nX92xZ0zXYuhT3vjGsJO6SwsA2Rnz15J_Lg0o_TRpqULHBmMnQmAV6REX_fmXzvqEfmwPN9wxmmidlFTGickVFQ_mkabgokE5LneLl0kbk0lmm75Kyulw0T8sPtAcpIngfI2SlynBYhsgNFKfnt4f5mvqQRjbJfTBGnRTDF6MSKBU0z3IFfYoyYpoMlFm5ddn9f1sJgA9AYbBUuwG9_qqoCWQq5whsB3J1jrkpfP97b86KTc5ukvNtn3e-V9tG97fYDUTLf7-yh5O6SPUXMrNWi8N3Q6e4ioiO87R7c6x33E-Moiob0cP_z-83Ogl_NuGAouTm921YVaFz4gzf2qPAxfhjZ3YrUBlzc_n7_7Ra2Yt84_dTCwjdZ74JH-h_RsBVEhm2hB-4nmWNE6dPX3xCl7z12IyTTuye2qxUr8aY7DjucLfAuaxxeaQ7pJS9YVMBK9OXEr3sWgSz355NuRozoAtEFfhAScJIEhjsacnz7QVB9VfJ679oTziVUQop9eftlzHDv9hACJTO8aYtacPxr3fgQBY7y3p7vsp7hCl7xFrQRSmIhK2WwXTOLGxcggFsDVVt__D0A0TTY5r_u4bq7Dw8_Ht0iWlvrvxd4Q7ukGym98mfHlYSxH72n4wpnlO9vfdtY0Yi_ocT-Y0E0mJy5xLAAyxFdVP6TyLWGGpjpt_v7zyT9NZwSR2ihtN39M1FcldOknCQTdgXTeEzzSTzOs-xqPQVWpekoGxXAWUJpGud5MYrzjPNxno4rdiWmlNA0JnEap9k4yaKYTCajuCzYiPI4n1QoJdAwUUd7-Vf-w840jiml5KpmBdTGfySidJjWKMpur_TUPXVdtCuDUlILY80Rxwpbw3TwzIe78U69N3RnYFxp1Rw_JSE6uWp1PXUOMwePrYRdt0XEVdO7rz9c9x-TEF14MQbRRa9nO6X_CQAA__9uhP6A">