Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-66903

tst_QProcess::softExitInSlots is flaky on Windows

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Reported
    • Priority: P1: Critical
    • Resolution: Unresolved
    • Affects Version/s: 5.11
    • Fix Version/s: None
    • Component/s: Core: I/O
    • Environment:
      Windows 10 in CI

      Description

      tst_QProcess::softExitInSlots has been flaky on Windows in CI.

      Example failure:

      ********* Start testing of tst_QProcess *********
       Config: Using QtTest library 5.12.0, Qt 5.12.0 (x86_64-little_endian-llp64 shared (dynamic) release build; by MSVC 2015)
       PASS   : tst_QProcess::initTestCase()
       PASS   : tst_QProcess::getSetCheck()
       QWARN  : tst_QProcess::constructing() QIODevice::read (QProcess): device not open
       QWARN  : tst_QProcess::constructing() QIODevice::read (QProcess): device not open
       QWARN  : tst_QProcess::constructing() QIODevice::read (QProcess): device not open
       QWARN  : tst_QProcess::constructing() QIODevice::write (QProcess): device not open
       PASS   : tst_QProcess::constructing()
       PASS   : tst_QProcess::simpleStart()
       PASS   : tst_QProcess::startWithOpen()
       PASS   : tst_QProcess::startWithOldOpen()
       PASS   : tst_QProcess::execute()
       PASS   : tst_QProcess::startDetached()
       PASS   : tst_QProcess::crashTest()
       PASS   : tst_QProcess::crashTest2()
       PASS   : tst_QProcess::echoTest(1)
       PASS   : tst_QProcess::echoTest(2)
       PASS   : tst_QProcess::echoTest(3)
       PASS   : tst_QProcess::echoTest(4)
       PASS   : tst_QProcess::echoTest(5)
       PASS   : tst_QProcess::echoTest(100 bytes)
       PASS   : tst_QProcess::echoTest(1000 bytes)
       PASS   : tst_QProcess::echoTest(10000 bytes)
       PASS   : tst_QProcess::echoTest2()
       PASS   : tst_QProcess::echoTestGui()
       PASS   : tst_QProcess::testSetNamedPipeHandleState()
       PASS   : tst_QProcess::batFiles(simple)
       PASS   : tst_QProcess::batFiles(with space)
       PASS   : tst_QProcess::loopBackTest()
       PASS   : tst_QProcess::readTimeoutAndThenCrash()
       PASS   : tst_QProcess::deadWhileReading()
       PASS   : tst_QProcess::restartProcessDeadlock()
       PASS   : tst_QProcess::closeWriteChannel()
       PASS   : tst_QProcess::closeReadChannel()
       PASS   : tst_QProcess::openModes()
       PASS   : tst_QProcess::emitReadyReadOnlyWhenNewDataArrives()
       FAIL!  : tst_QProcess::softExitInSlots(gui app 0) QTestLib: This test case check ("((proc.waitedForFinished))") failed because the requested timeout (60000 ms) was too short, 113800 ms would have been sufficient this time.
       ..\tst_qprocess.cpp(1020) : failure location
       PASS   : tst_QProcess::softExitInSlots(gui app 1)
       PASS   : tst_QProcess::softExitInSlots(gui app 2)
       PASS   : tst_QProcess::softExitInSlots(gui app 3)
       PASS   : tst_QProcess::softExitInSlots(gui app 4)
       PASS   : tst_QProcess::softExitInSlots(gui app 5)
       PASS   : tst_QProcess::softExitInSlots(console app 0)
       PASS   : tst_QProcess::softExitInSlots(console app 1)
       PASS   : tst_QProcess::softExitInSlots(console app 2)
       PASS   : tst_QProcess::softExitInSlots(console app 3)
       PASS   : tst_QProcess::softExitInSlots(console app 4)
       PASS   : tst_QProcess::softExitInSlots(console app 5)
       PASS   : tst_QProcess::mergedChannels()
       PASS   : tst_QProcess::forwardedChannels(separate)
       PASS   : tst_QProcess::forwardedChannels(forwarded)
       PASS   : tst_QProcess::forwardedChannels(stdout)
       PASS   : tst_QProcess::forwardedChannels(stderr)
       PASS   : tst_QProcess::forwardedChannels(fwdinput)
       PASS   : tst_QProcess::atEnd()
       PASS   : tst_QProcess::atEnd2()
       PASS   : tst_QProcess::waitForFinishedWithTimeout()
       PASS   : tst_QProcess::waitForReadyReadInAReadyReadSlot()
       PASS   : tst_QProcess::waitForBytesWrittenInABytesWrittenSlot()
       PASS   : tst_QProcess::setEnvironment(setting-empty)
       PASS   : tst_QProcess::setEnvironment(setting)
       PASS   : tst_QProcess::setEnvironment(unsetting)
       PASS   : tst_QProcess::setEnvironment(overriding)
       PASS   : tst_QProcess::setProcessEnvironment(setting-empty)
       PASS   : tst_QProcess::setProcessEnvironment(setting)
       PASS   : tst_QProcess::setProcessEnvironment(unsetting)
       PASS   : tst_QProcess::setProcessEnvironment(overriding)
       PASS   : tst_QProcess::environmentIsSorted()
       PASS   : tst_QProcess::spaceInName()
       PASS   : tst_QProcess::setStandardInputFile()
       PASS   : tst_QProcess::setStandardOutputFile(stdout-truncate)
       PASS   : tst_QProcess::setStandardOutputFile(stdout-append)
       PASS   : tst_QProcess::setStandardOutputFile(stderr-truncate)
       PASS   : tst_QProcess::setStandardOutputFile(stderr-append)
       PASS   : tst_QProcess::setStandardOutputFile(merged-truncate)
       PASS   : tst_QProcess::setStandardOutputFile(merged-append)
       PASS   : tst_QProcess::setStandardOutputFileNullDevice()
       PASS   : tst_QProcess::setStandardOutputFileAndWaitForBytesWritten()
       PASS   : tst_QProcess::setStandardOutputProcess(separate)
       PASS   : tst_QProcess::setStandardOutputProcess(separate with waitForBytesWritten)
       PASS   : tst_QProcess::setStandardOutputProcess(merged)
       PASS   : tst_QProcess::removeFileWhileProcessIsRunning()
       BPASS  : tst_QProcess::fileWriterProcess()
       PASS   : tst_QProcess::switchReadChannels()
       PASS   : tst_QProcess::discardUnwantedOutput()
       PASS   : tst_QProcess::setWorkingDirectory()
       PASS   : tst_QProcess::setNonExistentWorkingDirectory()
       PASS   : tst_QProcess::exitStatus(normal)
       PASS   : tst_QProcess::exitStatus(crash)
       PASS   : tst_QProcess::exitStatus(normal-crash)
       PASS   : tst_QProcess::exitStatus(crash-normal)
       PASS   : tst_QProcess::waitForFinished()
       PASS   : tst_QProcess::hardExit()
       PASS   : tst_QProcess::softExit()
       PASS   : tst_QProcess::processInAThread()
       PASS   : tst_QProcess::processesInMultipleThreads()
       PASS   : tst_QProcess::spaceArgsTest(arg1 arg2)
       PASS   : tst_QProcess::spaceArgsTest(""""arg1"""" "ar """g2")
       PASS   : tst_QProcess::spaceArgsTest("ar g1" "a rg 2")
       PASS   : tst_QProcess::spaceArgsTest("-lar g1" "-l"""ar g2"""")
       PASS   : tst_QProcess::spaceArgsTest(ar""""g1)
       PASS   : tst_QProcess::spaceArgsTest(ar\g1)
       PASS   : tst_QProcess::spaceArgsTest(ar\g""""1)
       PASS   : tst_QProcess::spaceArgsTest(arg\"""1)
       PASS   : tst_QProcess::spaceArgsTest("""""""""""")
       PASS   : tst_QProcess::spaceArgsTest("""""""""""" """"""" """"""")
       PASS   : tst_QProcess::spaceArgsTest(""""""" "" """"""" (bogus double quotes))
       PASS   : tst_QProcess::spaceArgsTest( """"""" "" """""""   (bogus double quotes))
       PASS   : tst_QProcess::nativeArguments()
       PASS   : tst_QProcess::createProcessArgumentsModifier()
       PASS   : tst_QProcess::exitCodeTest()
       PASS   : tst_QProcess::systemEnvironment()
       PASS   : tst_QProcess::lockupsInStartDetached()
       PASS   : tst_QProcess::waitForReadyReadForNonexistantProcess()
       PASS   : tst_QProcess::detachedProcessParameters(none)
       PASS   : tst_QProcess::detachedProcessParameters(stdout)
       PASS   : tst_QProcess::detachedProcessParameters(stderr)
       PASS   : tst_QProcess::startFinishStartFinish()
       PASS   : tst_QProcess::invalidProgramString(null string)
       PASS   : tst_QProcess::invalidProgramString(empty string)
       PASS   : tst_QProcess::invalidProgramString(only blank string)
       PASS   : tst_QProcess::onlyOneStartedSignal()
       PASS   : tst_QProcess::finishProcessBeforeReadingDone()
       PASS   : tst_QProcess::waitForStartedWithoutStart()
       PASS   : tst_QProcess::startStopStartStop()
       PASS   : tst_QProcess::startStopStartStopBuffers(separate-separate)
       PASS   : tst_QProcess::startStopStartStopBuffers(separate-merged)
       PASS   : tst_QProcess::startStopStartStopBuffers(merged-separate)
       PASS   : tst_QProcess::startStopStartStopBuffers(merged-merged)
       lline3
       ine3
       PASS   : tst_QProcess::startStopStartStopBuffers(merged-forwarded)
       PASS   : tst_QProcess::processEventsInAReadyReadSlot(no waitForReadyRead)
       PASS   : tst_QProcess::processEventsInAReadyReadSlot(waitForReadyRead)
       PASS   : tst_QProcess::failToStart()
       PASS   : tst_QProcess::failToStartWithWait()
       PASS   : tst_QProcess::failToStartWithEventLoop()
       PASS   : tst_QProcess::failToStartEmptyArgs(start(QString, QStringList, OpenMode))
       PASS   : tst_QProcess::failToStartEmptyArgs(start(QString, OpenMode))
       PASS   : tst_QProcess::failToStartEmptyArgs(start(OpenMode))
       PASS   : tst_QProcess::cleanupTestCase()
       Totals: 132 passed, 1 failed, 0 skipped, 1 blacklisted, 210148ms
       ********* Finished testing of tst_QProcess *********
      

      Full log of the failure: https://testresults.qt.io/logs/qt/qtbase/c21aa2db1b32c03c1abfc190dde3df78157aec17/WindowsWindows_10x86_64WindowsWindows_10x86_64MSVC2015qtci-windows-10-x86_64-10-e219adDeveloperBuild_Release_QtNamespace_QtLibInfix_BuildExamples/2a48a3b7dcb9652b1532a3ad14de7580b5b9b1ee/test_1520341412/log.txt.gz

      Grafana statistics: https://testresults.qt.io/grafana/d/000000009/coin-single-test-details?orgId=1&var-project=qt%2Fqtbase&var-testcase=tests%2Fauto%2Fcorelib%2Fio%2Fqprocess%2Ftest&var-testfunction=softExitInSlots&var-branch=5.11&var-branch=5.9&var-branch=dev&var-inter=24h

        Attachments

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

          Activity

            People

            • Assignee:
              thiago Thiago Macieira
              Reporter:
              kari.oikarinen Kari Oikarinen
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:

                Gerrit Reviews

                There are no open Gerrit changes