Created attachment 64885 [details] CLI debug output Version: git master (using KDE 4.5.5) OS: Linux When trying to parse the file boost/mpl/assert.hpp (from Boost 1.47, haven't tried older versions yet) the expression parser crashes. Here is what print m_session->dumpNode(node) in Cpp::ExpressionVisitor::visit gives SimpleTypeSpecifier [ 166 , 167 ] "assert_ " Name [ 166 , 167 ] "assert_ " UnqualifiedName [ 166 , 167 ] "assert_ " UnqualifiedName Name SimpleTypeSpecifier and here's the backtrace #0 0x00007ffff2652ba5 in raise (sig=<value optimised out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 #1 0x00007ffff26566b0 in abort () at abort.c:92 #2 0x00007ffff430d864 in qt_message_output(QtMsgType, char const*) () from /usr/lib/libQtCore.so.4 #3 0x00007ffff430da42 in ?? () from /usr/lib/libQtCore.so.4 #4 0x00007ffff430dbf5 in qFatal(char const*, ...) () from /usr/lib/libQtCore.so.4 #5 0x00007fffc6e4ecfe in TypeASTVisitor::visitSimpleTypeSpecifier (this=0x7fffc62f6200, node=0x7fffd8df63e8) at /home/fochler/software/KDevelop/kdevelop/languages/cpp/cppduchain/type_visitor.cpp:158 #6 0x00007fffc6e4f2a1 in TypeASTVisitor::run (this=0x7fffc62f6200, node=0x7fffd8df63e8) at /home/fochler/software/KDevelop/kdevelop/languages/cpp/cppduchain/type_visitor.cpp:107 #7 0x00007fffc6e37b9c in Cpp::ExpressionVisitor::visitSimpleTypeSpecifier (this=0x7fffc62f7110, node=<value optimised out>) at /home/fochler/software/KDevelop/kdevelop/languages/cpp/cppduchain/expressionvisitor.cpp:1152 #8 0x00007fffc6e33606 in Cpp::ExpressionVisitor::visit (this=0x7fffc62f7110, node=0x7fffd8df63e8) at /home/fochler/software/KDevelop/kdevelop/languages/cpp/cppduchain/expressionvisitor.cpp:2395 #9 0x00007fffc6b1519e in DefaultVisitor::visitParameterDeclaration (this=0x28d2, node=0x7fffd8df6510) at /home/fochler/software/KDevelop/kdevelop/languages/cpp/parser/default_visitor.cpp:310 #10 0x00007fffc6e33606 in Cpp::ExpressionVisitor::visit (this=0x7fffc62f7110, node=0x7fffd8df6510) at /home/fochler/software/KDevelop/kdevelop/languages/cpp/cppduchain/expressionvisitor.cpp:2395 #11 0x00007fffc6b162cd in visitNodes<ParameterDeclarationAST*> (v=0x7fffc62f7110, nodes=<value optimised out>) at /home/fochler/software/KDevelop/kdevelop/languages/cpp/parser/visitor.h:138 #12 0x00007fffc6e33606 in Cpp::ExpressionVisitor::visit (this=0x7fffc62f7110, node=0x7fffd8df6358) at /home/fochler/software/KDevelop/kdevelop/languages/cpp/cppduchain/expressionvisitor.cpp:2395 #13 0x00007fffc6e379b3 in Cpp::ExpressionVisitor::visitDeclarator (this=0x7fffc62f7110, node=0x7fffd8df6228) at /home/fochler/software/KDevelop/kdevelop/languages/cpp/cppduchain/expressionvisitor.cpp:1264 #14 0x00007fffc6e33606 in Cpp::ExpressionVisitor::visit (this=0x7fffc62f7110, node=0x7fffd8df6228) at /home/fochler/software/KDevelop/kdevelop/languages/cpp/cppduchain/expressionvisitor.cpp:2395 #15 0x00007fffc6b14f5e in DefaultVisitor::visitInitDeclarator (this=0x28d2, node=0x7fffd8df6758) at /home/fochler/software/KDevelop/kdevelop/languages/cpp/parser/default_visitor.cpp:205 #16 0x00007fffc6e3c25b in Cpp::ExpressionVisitor::visitInitDeclarator (this=0x7fffc62f7110, node=0x7fffd8df6758) at /home/fochler/software/KDevelop/kdevelop/languages/cpp/cppduchain/expressionvisitor.cpp:1204 #17 0x00007fffc6e33606 in Cpp::ExpressionVisitor::visit (this=0x7fffc62f7110, node=0x7fffd8df6758) at /home/fochler/software/KDevelop/kdevelop/languages/cpp/cppduchain/expressionvisitor.cpp:2395 #18 0x00007fffc6e33721 in Cpp::ExpressionVisitor::visitSimpleDeclaration (this=0x7fffc62f7110, node=<value optimised out>) at /home/fochler/software/KDevelop/kdevelop/languages/cpp/cppduchain/expressionvisitor.cpp:2323 #19 0x00007fffc6e33606 in Cpp::ExpressionVisitor::visit (this=0x7fffc62f7110, node=0x7fffd8df6798) at /home/fochler/software/KDevelop/kdevelop/languages/cpp/cppduchain/expressionvisitor.cpp:2395 #20 0x00007fffc6e339b1 in Cpp::ExpressionVisitor::parse (this=0x7fffc62f7110, ast=0x7fffd8df6798) at /home/fochler/software/KDevelop/kdevelop/languages/cpp/cppduchain/expressionvisitor.cpp:245 #21 0x00007fffc6dfef12 in UseBuilder::visitSimpleDeclaration (this=0x7fffc62f7e70, node=0x7fffd8df6798) at /home/fochler/software/KDevelop/kdevelop/languages/cpp/cppduchain/usebuilder.cpp:241 #22 0x00007fffc6b15d2d in visitNodes<DeclarationAST*> (v=0x7fffc62f7ed0, nodes=<value optimised out>) at /home/fochler/software/KDevelop/kdevelop/languages/cpp/parser/visitor.h:138 #23 0x00007fffc6dc3063 in ContextBuilder::visitNamespace (this=0x7fffc62f7e70, node=0x7fffd8df0d48) at /home/fochler/software/KDevelop/kdevelop/languages/cpp/cppduchain/contextbuilder.cpp:472 #24 0x00007fffc6b15d2d in visitNodes<DeclarationAST*> (v=0x7fffc62f7ed0, nodes=<value optimised out>) at /home/fochler/software/KDevelop/kdevelop/languages/cpp/parser/visitor.h:138 #25 0x00007fffc6dc6608 in KDevelop::AbstractContextBuilder<AST, NameAST>::supportBuild (this=0x7fffc62f7e70, node=0x7fffd8df0d00, context=0x7fffd8d2d530) at /home/fochler/usr/kdev4dbg/include/kdevplatform/language/duchain/builders/abstractcontextbuilder.h:133 #26 0x00007fffc6e01551 in KDevelop::AbstractUseBuilder<AST, NameAST, ContextBuilder>::buildUses(AST*) () from /home/fochler/usr/kdev4dbg/lib/libkdev4cppduchain.so #27 0x00007fffc6dff1ef in UseBuilder::buildUses (this=0x7fffc62f7e70, node=0x7fffd8df0d00) at /home/fochler/software/KDevelop/kdevelop/languages/cpp/cppduchain/usebuilder.cpp:56 #28 0x00007fffc72f9c24 in CPPInternalParseJob::run (this=0x3b1ee50) at /home/fochler/software/KDevelop/kdevelop/languages/cpp/cppparsejob.cpp:713 #29 0x00007ffff63f6981 in ?? () from /usr/lib/libthreadweaver.so.4 #30 0x00007ffff63f6c7e in ThreadWeaver::Job::execute(ThreadWeaver::Thread*) () from /usr/lib/libthreadweaver.so.4 #31 0x00007ffff63f8083 in ?? () from /usr/lib/libthreadweaver.so.4 #32 0x00007ffff63f5c6f in ?? () from /usr/lib/libthreadweaver.so.4 #33 0x00007ffff63f61f8 in ThreadWeaver::Thread::run() () from /usr/lib/libthreadweaver.so.4 #34 0x00007ffff431627e in ?? () from /usr/lib/libQtCore.so.4 #35 0x00007ffff408b971 in start_thread (arg=<value optimised out>) at pthread_create.c:304 #36 0x00007ffff270592d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 #37 0x0000000000000000 in ?? () I'll also attach the CLI output and the offending header file. kdevduchain and configuration in .kde had been cleared previously. Reproducible: Always Steps to Reproduce: Open boost/mpl/assert.hpp (from boost 1.47) in kdevelop Actual Results: Crash Expected Results: No crash
Created attachment 64886 [details] This header causes the parser to crash (from Boost 1.47)
sigh I wonder how I could have missed that yesterday. confirmed and also hit it all the time with bigger projects due to e.g. /usr/include/c++/4.5/type_traits
Git commit 260208d7cd8121c283cfbf4fc13f25b51e1d5887 by Milian Wolff. Committed on 26/10/2011 at 18:20. Pushed by mwolff into branch 'master'. fix loss of top context due to recursive expressionvisitor::parse calls wow, this took me long to figure out: the name+type visitors can trigger a recursive call to ExpressionVisitor::parse and hence could overwrite m_topContext = 0 on exit... BUG: 285004 M +3 -2 languages/cpp/cppduchain/expressionvisitor.cpp M +1 -0 languages/cpp/cppduchain/tests/test_duchain.h M +19 -1 languages/cpp/cppduchain/tests/test_duchain_cpp2011.cpp http://commits.kde.org/kdevelop/260208d7cd8121c283cfbf4fc13f25b51e1d5887
Moving all the bugs from the CPP Parser. It was not well defined the difference between it and C++ Language Support and people kept reporting in both places indistinctively