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

tst_qprocess occasionally hangs on Windows

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P1: Critical
    • 5.0.0 Beta 2
    • 5.0.0
    • Core: I/O
    • None
    • Windows 7 32-bit
      MSVC 2010
    • c6f3d919dd82497183bdf780b0d00aeb374aa934

    Description

      On Windows, the tst_qprocess autotest sometimes hangs.

      From CI builds 02272 through 02572 of qtbase master, this happened 8 times (a ~2.6% failure rate).

      Some links to logs follow. Note that the plain text logs themselves don't make it clear where the test is hanging, but the test results are also written to separate XML files. I've reproduced a couple of those here:

      XML from build 2572
      <?xml version="1.0" encoding="ISO-8859-1"?>
      <TestCase name="tst_QProcess">
      <Environment>
          <QtVersion>5.0.0</QtVersion>
          <QTestVersion>5.0.0</QTestVersion>
      </Environment>
      <TestFunction name="initTestCase">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="getSetCheck">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="constructing">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="simpleStart">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="execute">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="startDetached">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="crashTest">
      <Message type="skip" file="..\tst_qprocess.cpp" line="303">
          <Description><![CDATA[This test opens a crash dialog on Windows]]></Description>
      </Message>
      </TestFunction>
      <TestFunction name="crashTest2">
      <Message type="skip" file="..\tst_qprocess.cpp" line="343">
          <Description><![CDATA[This test opens a crash dialog on Windows]]></Description>
      </Message>
      </TestFunction>
      <TestFunction name="echoTest">
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[1]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[2]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[3]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[4]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[5]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[100 bytes]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[1000 bytes]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[10000 bytes]]></DataTag>
      </Incident>
      </TestFunction>
      <TestFunction name="echoTest2">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="echoTest_performance">
      <Message type="qdebug" file="" line="0">
          <Description><![CDATA[Elapsed time: 2016 ms; transfer rate: 55.0595 MB/s ]]></Description>
      </Message>
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="echoTestGui">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="batFiles">
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[simple]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[with space]]></DataTag>
      </Incident>
      </TestFunction>
      <TestFunction name="exitStatus">
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[normal]]></DataTag>
      </Incident>
      <Message type="skip" file="..\tst_qprocess.cpp" line="631">
          <DataTag><![CDATA[crash]]></DataTag>
          <Description><![CDATA[This test opens a crash dialog on Windows]]></Description>
      </Message>
      <Message type="skip" file="..\tst_qprocess.cpp" line="631">
          <DataTag><![CDATA[normal-crash]]></DataTag>
          <Description><![CDATA[This test opens a crash dialog on Windows]]></Description>
      </Message>
      <Message type="skip" file="..\tst_qprocess.cpp" line="631">
          <DataTag><![CDATA[crash-normal]]></DataTag>
          <Description><![CDATA[This test opens a crash dialog on Windows]]></Description>
      </Message>
      </TestFunction>
      <TestFunction name="loopBackTest">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="readTimeoutAndThenCrash">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="waitForFinished">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="deadWhileReading">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="restartProcessDeadlock">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="closeWriteChannel">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="closeReadChannel">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="openModes">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="emitReadyReadOnlyWhenNewDataArrives">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="hardExit">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="softExit">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="softExitInSlots">
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[gui app]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[console app]]></DataTag>
      </Incident>
      </TestFunction>
      <TestFunction name="mergedChannels">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="forwardedChannels">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="atEnd">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="atEnd2">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="processInAThread">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="processesInMultipleThreads">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="waitForFinishedWithTimeout">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="waitForReadyReadInAReadyReadSlot">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="waitForBytesWrittenInABytesWrittenSlot">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="spaceArgsTest">
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[arg1 arg2]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[""""arg1"""" "ar """g2"]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA["ar g1" "a rg 2"]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA["-lar g1" "-l"""ar g2""""]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[ar""""g1]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[ar\g1]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[ar\g""""1]]></DataTag>
      </Incident>
      
      XML from build 2528
      <?xml version="1.0" encoding="ISO-8859-1"?>
      <TestCase name="tst_QProcess">
      <Environment>
          <QtVersion>5.0.0</QtVersion>
          <QTestVersion>5.0.0</QTestVersion>
      </Environment>
      <TestFunction name="initTestCase">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="getSetCheck">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="constructing">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="simpleStart">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="execute">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="startDetached">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="crashTest">
      <Message type="skip" file="..\tst_qprocess.cpp" line="303">
          <Description><![CDATA[This test opens a crash dialog on Windows]]></Description>
      </Message>
      </TestFunction>
      <TestFunction name="crashTest2">
      <Message type="skip" file="..\tst_qprocess.cpp" line="343">
          <Description><![CDATA[This test opens a crash dialog on Windows]]></Description>
      </Message>
      </TestFunction>
      <TestFunction name="echoTest">
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[1]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[2]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[3]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[4]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[5]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[100 bytes]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[1000 bytes]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[10000 bytes]]></DataTag>
      </Incident>
      </TestFunction>
      <TestFunction name="echoTest2">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="echoTest_performance">
      <Message type="qdebug" file="" line="0">
          <Description><![CDATA[Elapsed time: 2000 ms; transfer rate: 83.5 MB/s ]]></Description>
      </Message>
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="echoTestGui">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="batFiles">
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[simple]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[with space]]></DataTag>
      </Incident>
      </TestFunction>
      <TestFunction name="exitStatus">
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[normal]]></DataTag>
      </Incident>
      <Message type="skip" file="..\tst_qprocess.cpp" line="631">
          <DataTag><![CDATA[crash]]></DataTag>
          <Description><![CDATA[This test opens a crash dialog on Windows]]></Description>
      </Message>
      <Message type="skip" file="..\tst_qprocess.cpp" line="631">
          <DataTag><![CDATA[normal-crash]]></DataTag>
          <Description><![CDATA[This test opens a crash dialog on Windows]]></Description>
      </Message>
      <Message type="skip" file="..\tst_qprocess.cpp" line="631">
          <DataTag><![CDATA[crash-normal]]></DataTag>
          <Description><![CDATA[This test opens a crash dialog on Windows]]></Description>
      </Message>
      </TestFunction>
      <TestFunction name="loopBackTest">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="readTimeoutAndThenCrash">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="waitForFinished">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="deadWhileReading">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="restartProcessDeadlock">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="closeWriteChannel">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="closeReadChannel">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="openModes">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="emitReadyReadOnlyWhenNewDataArrives">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="hardExit">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="softExit">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="softExitInSlots">
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[gui app]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[console app]]></DataTag>
      </Incident>
      </TestFunction>
      <TestFunction name="mergedChannels">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="forwardedChannels">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="atEnd">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="atEnd2">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="processInAThread">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="processesInMultipleThreads">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="waitForFinishedWithTimeout">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="waitForReadyReadInAReadyReadSlot">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="waitForBytesWrittenInABytesWrittenSlot">
      <Incident type="pass" file="" line="0" />
      </TestFunction>
      <TestFunction name="spaceArgsTest">
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[arg1 arg2]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[""""arg1"""" "ar """g2"]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA["ar g1" "a rg 2"]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA["-lar g1" "-l"""ar g2""""]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[ar""""g1]]></DataTag>
      </Incident>
      <Incident type="pass" file="" line="0">
          <DataTag><![CDATA[ar\g1]]></DataTag>
      </Incident>
      

      Attachments

        For Gerrit Dashboard: QTBUG-25342
        # Subject Branch Project Status CR V

        Activity

          People

            jbornema Joerg Bornemann
            rmcgover Rohan McGovern (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes