Created attachment 126423 [details] Source file that causes the crash Description of problem: Kdevelop crashes when parsing C++ code using libclang. Version-Release number of selected component (if applicable): kdevelop-5.5.0-1.fc31.src.rpm clang-9.0.0-1.fc31.src.rpm How reproducible: In KDevelop create an empty .cpp file and #include the attached .hpp file. KDevelop then crashes. Additional info: In my case if I have the same code directly in .cpp file it does not crash (but I have disabled background parsing, but KDevelop does parse code when switching tabs). ### imporant lines: 19-30 of the provided source file. Currently clang does not compile code that uses "auto&" as parameters. Note that i am using "auto&" as function parameters on other places within KDevelop and although it doesn't like them, most of the code is parsed anyway. The crash does not happen when: 1) changing the auto& parameter for a proper template typename parameter as in: template<typename Self> static auto static_find(Self& self, const Key_type& key) 2) replacing the structured binding for a single variable initialization.
Created attachment 126424 [details] Stack trace (not exactly corresponding to the the source file)
To be precise, Kdevelop crashes when I press F5 or simply force reparsing on the .cpp file.
could you please report this bug upstream to clang? that crash dump is deep within llvm/clang codebase: Thread 28 (Thread 0x7f5557fff700 (LWP 647416)): [KCrash Handler] #6 clang::Decl::setInvalidDecl (this=0x0, Invalid=true) at ../lib/AST/DeclBase.cpp:132 #7 0x00007f55c0beaeb0 in clang::Decl::setInvalidDecl (this=this@entry=0x7f5551d95848, Invalid=<optimized out>) at ../lib/AST/DeclBase.cpp:149 #8 0x00007f55bb48fb14 in clang::ASTDeclReader::VisitDecl (this=0x7f5557ffbb60, D=0x7f5551d95848) at /usr/include/llvm/ADT/SmallVector.h:148 #9 0x00007f55bb4909b5 in clang::ASTDeclReader::VisitNamedDecl (this=this@entry=0x7f5557ffbb60, ND=ND@entry=0x7f5551d95848) at ../lib/Serialization/ASTReaderDecl.cpp:657 #10 0x00007f55bb490b95 in clang::ASTDeclReader::VisitValueDecl (this=0x7f5557ffbb60, VD=0x7f5551d95848) at ../lib/Serialization/ASTReaderDecl.cpp:806 #11 0x00007f55bb490c2d in clang::ASTDeclReader::VisitDeclaratorDecl (this=this@entry=0x7f5557ffbb60, DD=DD@entry=0x7f5551d95848) at ../lib/Serialization/ASTReaderDecl.cpp:825 #12 0x00007f55bb4b0830 in clang::ASTDeclReader::VisitVarDeclImpl (this=this@entry=0x7f5557ffbb60, VD=VD@entry=0x7f5551d95848) at ../lib/Serialization/ASTReaderDecl.cpp:1362 #13 0x00007f55bb4b1377 in clang::ASTDeclReader::VisitVarDecl (VD=0x7f5551d95848, this=0x7f5557ffbb60) at ../lib/Serialization/ASTReaderDecl.cpp:378 #14 clang::ASTDeclReader::VisitDecompositionDecl (this=0x7f5557ffbb60, DD=0x7f5551d95848) at ../lib/Serialization/ASTReaderDecl.cpp:1464 #15 0x00007f55bb4b3ed6 in clang::ASTDeclReader::Visit (this=0x7f5557ffbb60, D=0x7f5551d95848) at ../lib/Serialization/ASTReaderDecl.cpp:522 #16 0x00007f55bb4b4976 in clang::ASTReader::ReadDeclRecord (this=0x7f55214af1c0, ID=83898) at ../lib/Serialization/ASTReaderDecl.cpp:3967 #17 0x00007f55bb4144c1 in clang::ASTReader::GetDecl (this=0x7f55214af1c0, ID=83898) at ../lib/Serialization/ASTReader.cpp:7800 #18 0x00007f55bb4b6af1 in clang::ASTReader::ReadDecl (I=<optimized out>, R=..., F=..., this=0x7f55214af1c0) at ../include/clang/Serialization/ASTReader.h:1870 #19 clang::ASTRecordReader::readDecl (this=<optimized out>) at ../include/clang/Serialization/ASTReader.h:2524 #20 clang::ASTStmtReader::ReadDecl (this=0x7f5557ffbff0) at ../lib/Serialization/ASTReaderStmt.cpp:91 #21 clang::ASTStmtReader::VisitDeclStmt (this=0x7f5557ffbff0, S=0x7f5551d95828) at ../lib/Serialization/ASTReaderStmt.cpp:348 #22 0x00007f55bb4c9979 in clang::ASTReader::ReadStmtFromStream (this=0x7f55214af1c0, F=...) at ../lib/Serialization/ASTReaderStmt.cpp:3464 #23 0x00007f55bb426326 in clang::ASTReader::GetExternalDeclStmt(unsigned long) () at ../lib/Serialization/ASTReader.cpp:7854 #24 0x00007f55c0be1e1b in clang::FunctionDecl::getBody (this=this@entry=0x7f5520780cf8, Definition=@0x7f5557ffc3c8: 0x7f5520780cf8) at ../include/clang/AST/ExternalASTSource.h:400 #25 0x00007f55c0ef5f48 in clang_getCursorDefinition (C=...) at ../tools/libclang/CIndex.cpp:6311 #26 0x00007f55c0ef64ad in clang_isCursorDefinition (C=...) at ../tools/libclang/CIndex.cpp:6434 #27 0x00007f55c0fdc7ca in (anonymous namespace)::Visitor::dispatchCursor<(CXCursorKind)21, (Decision)0, (Decision)2> (cursor=..., this=0x7f5557ffe640, parent=...) at /usr/src/debug/kdevelop-5.5.0-1.fc31.x86_64/plugins/clang/duchain/builder.cpp:930