Uploaded image for project: 'Qt Creator'
  1. Qt Creator
  2. QTCREATORBUG-25739

Regression: QtCreator crashes while scanning for tests

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Not Evaluated
    • Qt Creator 4.15.1
    • Qt Creator 4.15.0
    • Test Integration
    • None
    • Kubuntu 21.04
    • Linux/X11
    • 0cef9a8554437a7ed7033198dffc5baa647d67e4

    Description

      While scanning tests, *QtCreator crashes* in this file: `src/plugins/autotest/gtest/gtestvisitors.cpp` at this line:
      ```
      const CPlusPlus::Argument *testCaseNameArg = ast->symbol->argumentAt(1)->asArgument();
      ```
      Debugger says that:

      • `ast->symbol->argumentAt(1)` is `0x0`.
      • and `ast->symbol->argumentCount()` is 1.

      It crashes on this [chromium test](https://source.chromium.org/chromium/chromium/src/+/main:media/gpu/vaapi/vp9_temporal_layers_unittest.cc;l=104?q=media%2Fgpu%2Fvaapi%2Fvp9_temporal_layers_unittest.cc&ss=chromium%2Fchromium%2Fsrc):

      ```
      TEST_P(VP9TemporalLayersTest, )
      const size_t num_temporal_layers = GetParam();
      VP9TemporalLayers temporal_layers(num_temporal_layers);
      EXPECT_EQ(temporal_layers.num_layers(), num_temporal_layers);
      ```

       

      It looks like regression was introduced in 5d5ff574953822043619c23f9b251016ac3357fe, specifically, this check was removed: ` || ast->symbol->argumentCount() != 2`

       

      Backtrace:
      ```
      1 Autotest::Internal::GTestVisitor::visit gtestvisitors.cpp 98 0x7f45853b1a67
      2 CPlusPlus::FunctionDefinitionAST::accept0 ASTVisit.cpp 495 0x7f458749e57c
      3 CPlusPlus::AST::accept AST.cpp 51 0x7f458746e658
      4 CPlusPlus::AST::accept AST.h 135 0x7f45874a1679
      5 CPlusPlus::AST::accept<CPlusPlus::DeclarationAST *> AST.h 141 0x7f45874a198f
      6 CPlusPlus::LinkageBodyAST::accept0 ASTVisit.cpp 567 0x7f458749ea0f
      7 CPlusPlus::AST::accept AST.cpp 51 0x7f458746e658
      8 CPlusPlus::AST::accept AST.h 135 0x7f45874a1679
      9 CPlusPlus::NamespaceAST::accept0 ASTVisit.cpp 657 0x7f458749ef1e
      10 CPlusPlus::AST::accept AST.cpp 51 0x7f458746e658
      11 CPlusPlus::AST::accept AST.h 135 0x7f45874a1679
      12 CPlusPlus::AST::accept<CPlusPlus::DeclarationAST *> AST.h 141 0x7f45874a198f
      13 CPlusPlus::TranslationUnitAST::accept0 ASTVisit.cpp 960 0x7f45874a001f
      14 CPlusPlus::AST::accept AST.cpp 51 0x7f458746e658
      15 CPlusPlus::AST::accept AST.h 135 0x7f45874a1679
      16 CPlusPlus::ASTVisitor::accept ASTVisitor.cpp 36 0x7f45874a1db3
      17 Autotest::Internal::GTestParser::processDocument gtestparser.cpp 104 0x7f45853a2a3a
      18 Autotest::Internal::parseFileForTests testcodeparser.cpp 291 0x7f45853fb878
      19 Autotest::Internal::TestCodeParser::<lambda(QFutureInterface<QSharedPointer<Autotest::TestParseResult>>&, const QString&)>::operator()(QFutureInterface<QSharedPointer<Autotest::TestParseResult>> &, const QString &) const testcodeparser.cpp 364 0x7f45853fb9ac
      20 Utils::Internal::runAsyncQFutureInterfaceDispatch<QSharedPointer<Autotest::TestParseResult>, const Autotest::Internal::TestCodeParser::scanForTests(const QStringList&, const QList<Autotest::ITestParser *>&)::<lambda(QFutureInterface<QSharedPointer<Autotest::TestParseResult>>&, const QString&)>&, std::reference_wrapper<QString>>(std::true_type, QFutureInterface<QSharedPointer<Autotest::TestParseResult>>, const Autotest::Internal::TestCodeParser::<lambda(QFutureInterface<QSharedPointer<Autotest::TestParseResult>>&, const QString&)> &) runextensions.h 257 0x7f4585403fd6
      ... <More>
      ```
      Variables:

      	Locals		
      		ast	@0x7fdfd8040b78	CPlusPlus::FunctionDefinitionAST
      			[CPlusPlus::DeclarationAST]	@0x7fdfd8040b78	CPlusPlus::DeclarationAST
      			ctor_initializer	0x0	CPlusPlus::CtorInitializerAST*
      			decl_specifier_list	0x0	CPlusPlus::SpecifierListAST*
      			declarator	@0x7fdfd80409b0	CPlusPlus::DeclaratorAST
      			function_body	@0x7fdfd8040bb0	CPlusPlus::CompoundStatementAST
      			qt_invokable_token	0	int
      			symbol	@0x7fdfd803db60	CPlusPlus::Function
      				[CPlusPlus::Scope]	@0x7fdfd803db60	CPlusPlus::Scope
      					[CPlusPlus::Symbol]	"TEST_P"	CPlusPlus::Symbol
      						[vptr]	_vptr.Symbol	 
      						_name	"TEST_P"	CPlusPlus::Identifier
      						_enclosingScope	@0x7fdfd8101ed0	CPlusPlus::Namespace
      						_next	0x0	CPlusPlus::Symbol*
      						_fileId	"/home/dimanne/devel/chromium/src/media/gpu/vaapi/vp9_temporal_layers_unittest.cc"	CPlusPlus::StringLiteral
      						_sourceLocation	458	int
      						_hashCode	92965440	unsigned int
      						_storage	0	int
      						_visibility	0	int
      						_index	3	int
      						_line	104	int
      						_column	1	int
      						_isGenerated	0	bool : 1
      						_isDeprecated	0	bool : 1
      						_isUnavailable	0	bool : 1
      					_endOffset	4576	int
      					_members	@0x7fdfd819e4f0	CPlusPlus::SymbolTable
      						_allocatedSymbols	4	int
      						_hash	@0x7fdfd80dca60	CPlusPlus::Block
      							[CPlusPlus::Scope]	@0x7fdfd83342a0	CPlusPlus::Scope
      						_hashSize	4	int
      						_owner	@0x7fdfd803db60	CPlusPlus::Function
      							[CPlusPlus::Scope]	@0x7fdfd803db60	CPlusPlus::Scope
      							[CPlusPlus::Type]	@0x7fdfd803dbb8	CPlusPlus::Type
      							#1	@0x7fdfd803dbd8	union {...}
      							_exceptionSpecification	0x0	CPlusPlus::StringLiteral*
      							_returnType	@0x7fdfd803dbc0	CPlusPlus::FullySpecifiedType
      						_symbolCount	1	int
      						_symbols	@0x7fdfd80ab3f0	CPlusPlus::Argument
      							[CPlusPlus::Symbol]	"<null>"	CPlusPlus::Symbol
      							_initializer	0x0	CPlusPlus::StringLiteral*
      							_type	"VP9TemporalLayersTest"	CPlusPlus::FullySpecifiedType
      					_startOffset	3371	int
      				[CPlusPlus::Type]	@0x7fdfd803dbb8	CPlusPlus::Type
      					[vptr]	_vptr.Type	 
      				#1	@0x7fdfd803dbd8	union {...}
      				_exceptionSpecification	0x0	CPlusPlus::StringLiteral*
      				_returnType	@0x7fdfd803dbc0	CPlusPlus::FullySpecifiedType
      					_type	@0x7fe264da63b8	CPlusPlus::UndefinedType
      						[CPlusPlus::Type]	@0x7fe264da63b8	CPlusPlus::Type
      					#1	@0x7fdfd803dbc8	union {...}
      						_flags	0	unsigned int
      						f	@0x7fdfd803dbc8	CPlusPlus::FullySpecifiedType::Flags
      		column	1689892470	int
      		disabled	127	bool
      		disabledCase	18	bool
      		disabledPrefix	"DISABLED_"	QString
      		id	@0x7fdfd8040998	CPlusPlus::DeclaratorIdAST
      		line	32738	int
      		locationAndType	@0x7fe2127fb810	Autotest::Internal::GTestCodeLocationAndType
      		namespaces	"media::"	QString
      		prettyName	"TEST_P"	QString
      		spec	@0x7fe2127fb7f0	Autotest::Internal::GTestCaseSpec
      		testCaseName	""	QString
      		testCaseNameArg	@0x7fe2127fb7e0	CPlusPlus::Argument
      		testSuiteName	""	QString
      		testSuiteNameArg	@0x7fdfd81aa4b0	CPlusPlus::Argument
      		this	@0x7fe2127fbb10	Autotest::Internal::GTestVisitor
      		token	32738	unsigned int
      	Inspector		
      	Expressions		
      	Return Value		
      	Tooltip		
      

      Logs:
      ```
      qtc.cpptools.indexer: Indexing 108998 of 108999 : "/home/dimanne/devel/chromium/src/out/IDE/gen/third_party/blink/public/mojom/background_fetch/background_fetch.mojom-test-utils.h"
      qtc.cpptools.indexer: Indexing 108999 of 108999 : "/home/dimanne/devel/chromium/src/third_party/webrtc/modules/audio_coding/neteq/buffer_level_filter.h"
      qtc.cpptools.indexer: Indexing finished.
      qtc.autotest.testcodeparser: setState( 0 ), currentState: 0
      qtc.autotest.testcodeparser: adding singleShot
      qtc.autotest.testcodeparser: calling scanForTests (updateTestTree)
      qtc.autotest.testcodeparser: setting state to FullParse (scanForTests)
      qtc.autotest.testcodeparser: "21:34:22.065" StartParsing
      ```

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              cstenger Christian Stenger
              dimanne DimanNe
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes