Details
-
Bug
-
Resolution: Done
-
P1: Critical
-
Qt Creator 2.8.0, Qt Creator 3.0.0-rc1
-
None
-
Linux OpenSUSE 12.3, x86_64, Qt-4.8.4 (from OpenSUSE rpms).
-
f4c6eae3bb304d990a1758960b8e902496a75bdc
Description
QtCreator crashes upon opening a C++ file (that I can't share unfortunately). The reason is the attempt to use an empty scope pointer in typedefsFromScopeUpToFunctionScope.
The empty scope pointer comes from a type representation (LookupItem) built around a template parameter, for which the LookupItem data structure seems to initialize only the name. All attributes (binding, declaration, scope) and flags (inside "type" attribute) are null. I've put the data structure dump after the traceback.
Traceback:
0 typedefsFromScopeUpToFunctionScope ResolveExpression.cpp 915 0x7fffe40108ff 1 getNamedTypeItems ResolveExpression.cpp 899 0x7fffe40108ff 2 resolve ResolveExpression.cpp 874 0x7fffe40108ff 3 CPlusPlus::ResolveExpression::baseExpression ResolveExpression.cpp 1008 0x7fffe40108ff 4 CPlusPlus::ResolveExpression::visit ResolveExpression.cpp 841 0x7fffe4012a2b 5 CPlusPlus::MemberAccessAST::accept0 ASTVisit.cpp 745 0x7fffe3f9efa3 6 CPlusPlus::AST::accept AST.cpp 51 0x7fffe3f98ed4 7 CPlusPlus::ResolveExpression::expression ResolveExpression.cpp 118 0x7fffe4011b19 8 CPlusPlus::ResolveExpression::resolve ResolveExpression.cpp 107 0x7fffe4011e36 9 CPlusPlus::ResolveExpression::operator() ResolveExpression.cpp 94 0x7fffe40129cc 10 CPlusPlus::TypeOfExpression::operator() TypeOfExpression.cpp 119 0x7fffe4009d6d 11 CPlusPlus::TypeOfExpression::operator() TypeOfExpression.cpp 88 0x7fffe400bf12 12 CppTools::CheckSymbols::visit cppchecksymbols.cpp 599 0x7fffe45c1e58 13 CPlusPlus::CallAST::accept0 ASTVisit.cpp 719 0x7fffe3f9ee39 14 CPlusPlus::AST::accept AST.cpp 51 0x7fffe3f98ed4 15 accept AST.h 93 0x7fffe3f9cc88 16 CPlusPlus::DeclaratorAST::accept0 ASTVisit.cpp 97 0x7fffe3f9cc88 17 CPlusPlus::AST::accept AST.cpp 51 0x7fffe3f98ed4 18 CppTools::CheckSymbols::visit cppchecksymbols.cpp 544 0x7fffe45c1934 19 CPlusPlus::SimpleDeclarationAST::accept0 ASTVisit.cpp 104 0x7fffe3f9cca9 20 CPlusPlus::AST::accept AST.cpp 51 0x7fffe3f98ed4 21 accept AST.h 93 0x7fffe3f9d941 22 CPlusPlus::DeclarationStatementAST::accept0 ASTVisit.cpp 334 0x7fffe3f9d941 23 CPlusPlus::AST::accept AST.cpp 51 0x7fffe3f98ed4 24 accept AST.h 93 0x7fffe3f9d6d9 25 accept<CPlusPlus::StatementAST*> AST.h 99 0x7fffe3f9d6d9 26 CPlusPlus::CompoundStatementAST::accept0 ASTVisit.cpp 290 0x7fffe3f9d6d9 27 CPlusPlus::AST::accept AST.cpp 51 0x7fffe3f98ed4 28 accept AST.h 93 0x7fffe3f9e382 29 CPlusPlus::IfStatementAST::accept0 ASTVisit.cpp 518 0x7fffe3f9e382 30 CPlusPlus::AST::accept AST.cpp 51 0x7fffe3f98ed4 31 accept AST.h 93 0x7fffe3f9d6d9 32 accept<CPlusPlus::StatementAST*> AST.h 99 0x7fffe3f9d6d9 33 CPlusPlus::CompoundStatementAST::accept0 ASTVisit.cpp 290 0x7fffe3f9d6d9 34 CPlusPlus::AST::accept AST.cpp 51 0x7fffe3f98ed4 35 accept AST.h 93 0x7fffe3f9e382 36 CPlusPlus::IfStatementAST::accept0 ASTVisit.cpp 518 0x7fffe3f9e382 37 CPlusPlus::AST::accept AST.cpp 51 0x7fffe3f98ed4 38 accept AST.h 93 0x7fffe3f9d6d9 39 accept<CPlusPlus::StatementAST*> AST.h 99 0x7fffe3f9d6d9 40 CPlusPlus::CompoundStatementAST::accept0 ASTVisit.cpp 290 0x7fffe3f9d6d9 41 CPlusPlus::AST::accept AST.cpp 51 0x7fffe3f98ed4 42 CppTools::CheckSymbols::visit cppchecksymbols.cpp 1063 0x7fffe45c3e7b 43 CPlusPlus::FunctionDefinitionAST::accept0 ASTVisit.cpp 471 0x7fffe3f9e0a9 44 CPlusPlus::AST::accept AST.cpp 51 0x7fffe3f98ed4 45 accept AST.h 93 0x7fffe3f9f939 46 accept<CPlusPlus::DeclarationAST*> AST.h 99 0x7fffe3f9f939 47 CPlusPlus::TranslationUnitAST::accept0 ASTVisit.cpp 928 0x7fffe3f9f939 48 CPlusPlus::AST::accept AST.cpp 51 0x7fffe3f98ed4 49 CppTools::CheckSymbols::run cppchecksymbols.cpp 338 0x7fffe45c0b77 50 ?? /usr/lib64/libQtCore.so.4 0x7ffff6306c9d 51 ?? /usr/lib64/libQtCore.so.4 0x7ffff63130cc 52 start_thread /lib64/libpthread.so.0 0x7ffff607ce0f 53 clone /lib64/libc.so.6 0x7ffff55967dd
Locals baseResults <1 items> QList<CPlusPlus::LookupItem> [0] @0x7fffc24cc4b0 CPlusPlus::LookupItem _binding 0x0 CPlusPlus::ClassOrNamespace * _declaration 0x0 CPlusPlus::Symbol * _scope 0x0 CPlusPlus::Scope * _type @0x7fffc24cc4b0 CPlusPlus::FullySpecifiedType _flags 0 unsigned int _type "TypeSommet" CPlusPlus::NamedType [CPlusPlus::Type] CPlusPlus::Type [vptr] 0x7fffe42c4810 <vtable for CPlusPlus::NamedType+16> [0] 0x7fffe3fbb100 <CPlusPlus::NamedType::~NamedType()> [1] 0x7fffe3fbb120 <CPlusPlus::NamedType::~NamedType()> [2] 0x7fffe3fbb8b0 <CPlusPlus::Type::asUndefinedType() const> [3] 0x7fffe3fbb8c0 <CPlusPlus::Type::asVoidType() const> [4] 0x7fffe3fbb8d0 <CPlusPlus::Type::asIntegerType() const> [5] 0x7fffe3fbb8e0 <CPlusPlus::Type::asFloatType() const> [6] 0x7fffe3fbb8f0 <CPlusPlus::Type::asPointerType() const> [7] 0x7fffe3fbb900 <CPlusPlus::Type::asPointerToMemberType() const> [8] 0x7fffe3fbb910 <CPlusPlus::Type::asReferenceType() const> [9] 0x7fffe3fbb920 <CPlusPlus::Type::asArrayType() const> [10] 0x7fffe3fbbc30 <CPlusPlus::NamedType::asNamedType() const> [11] 0x7fffe3fbb940 <CPlusPlus::Type::asFunctionType() const> [12] 0x7fffe3fbb950 <CPlusPlus::Type::asNamespaceType() const> [13] 0x7fffe3fbb960 <CPlusPlus::Type::asTemplateType() const> [14] 0x7fffe3fbb970 <CPlusPlus::Type::asClassType() const> [15] 0x7fffe3fbb980 <CPlusPlus::Type::asEnumType() const> [16] 0x7fffe3fbb990 <CPlusPlus::Type::asForwardClassDeclarationType() const> [17] 0x7fffe3fbb9a0 <CPlusPlus::Type::asObjCClassType() const> [18] 0x7fffe3fbb9b0 <CPlusPlus::Type::asObjCProtocolType() const> [19] 0x7fffe3fbb9c0 <CPlusPlus::Type::asObjCMethodType() const> [20] 0x7fffe3fbb9d0 <CPlusPlus::Type::asObjCForwardClassDeclarationType() const> [21] 0x7fffe3fbb9e0 <CPlusPlus::Type::asObjCForwardProtocolDeclarationType() const> [22] 0x7fffe3fbb9f0 <CPlusPlus::Type::asUndefinedType()> [23] 0x7fffe3fbba00 <CPlusPlus::Type::asVoidType()> [24] 0x7fffe3fbba10 <CPlusPlus::Type::asIntegerType()> [25] 0x7fffe3fbba20 <CPlusPlus::Type::asFloatType()> [26] 0x7fffe3fbba30 <CPlusPlus::Type::asPointerType()> [27] 0x7fffe3fbba40 <CPlusPlus::Type::asPointerToMemberType()> [28] 0x7fffe3fbba50 <CPlusPlus::Type::asReferenceType()> [29] 0x7fffe3fbba60 <CPlusPlus::Type::asArrayType()> [30] 0x7fffe3fbbc40 <CPlusPlus::NamedType::asNamedType()> [31] 0x7fffe3fbba80 <CPlusPlus::Type::asFunctionType()> [32] 0x7fffe3fbba90 <CPlusPlus::Type::asNamespaceType()> [33] 0x7fffe3fbbaa0 <CPlusPlus::Type::asTemplateType()> [34] 0x7fffe3fbbab0 <CPlusPlus::Type::asClassType()> [35] 0x7fffe3fbbac0 <CPlusPlus::Type::asEnumType()> [36] 0x7fffe3fbbad0 <CPlusPlus::Type::asForwardClassDeclarationType()> [37] 0x7fffe3fbbae0 <CPlusPlus::Type::asObjCClassType()> [38] 0x7fffe3fbbaf0 <CPlusPlus::Type::asObjCProtocolType()> [39] 0x7fffe3fbbb00 <CPlusPlus::Type::asObjCMethodType()> [40] 0x7fffe3fbbb10 <CPlusPlus::Type::asObjCForwardClassDeclarationType()> [41] 0x7fffe3fbbb20 <CPlusPlus::Type::asObjCForwardProtocolDeclarationType()> [42] 0x7fffe3fbb830 <CPlusPlus::NamedType::isEqualTo(CPlusPlus::Type const*) const> [43] 0x7fffe3fbb080 <CPlusPlus::NamedType::accept0(CPlusPlus::TypeVisitor*)> [44] 0x7fffe3fbb0a0 <CPlusPlus::NamedType::matchType0(CPlusPlus::Type const*, CPlusPlus::TypeMatcher*) const> _name "TypeSommet" CPlusPlus::Identifier [CPlusPlus::Literal] "TypeSommet" CPlusPlus::Literal [vptr] 0x7fffe42c4ad0 <vtable for CPlusPlus::Identifier+16> _chars "TypeSommet" char * _hashCode 179421956 unsigned int _index 0 unsigned int _next 0x0 CPlusPlus::Literal * _size 10 unsigned int [CPlusPlus::Name] CPlusPlus::Name f @0x7fffc24cc4b8 CPlusPlus::FullySpecifiedType::Flags _isAuto 0 unsigned int _isConst 0 unsigned int _isDeprecated 0 unsigned int _isExplicit 0 unsigned int _isExtern 0 unsigned int _isFinal 0 unsigned int _isFriend 0 unsigned int _isInline 0 unsigned int _isMutable 0 unsigned int _isOverride 0 unsigned int _isRegister 0 unsigned int _isSigned 0 unsigned int _isStatic 0 unsigned int _isTypedef 0 unsigned int _isUnavailable 0 unsigned int _isUnsigned 0 unsigned int _isVirtual 0 unsigned int _isVolatile 0 unsigned int