microsoft / vstest

Visual Studio Test Platform is the runner and engine that powers test explorer and vstest.console.
MIT License
897 stars 322 forks source link

testhost.exe crashes with access violation exception #2517

Closed SedkiHergli closed 4 years ago

SedkiHergli commented 4 years ago

I have an unhandled exception in my code which crush my testhost.exe process and fails my azure pipeline build (exactly within the VSTest task).

Exception: 0xC0000005: Access violation read location 0xFFFFFFFFFFFFFFFF

After analysing the dump file of the crush I found that this exception appears when I try to save my pdf document in the specified stream using the "save" method of the "PdfManger" class, I am using the Select.Pdf.x64 library.

For information: I'm migrating my build from xaml builds to azure pipeline builds with upgrading the test framework from MSTest to MSTestV2, I'm building my projects using the MSBuild task with the "release" configuration and with "Any CPU" as a platform,for "VSTest" Task I'm using "x64" as a build platform, "release" as a configuration, MSTest.TestAdapter.2.1.1 as a test adapter, I'm using VS 2019, W10 and here is the runsetting file:

<RunSettings>
  <!-- Configurations that affect the Test Framework -->
  <RunConfiguration> 
    <MaxCpuCount>0</MaxCpuCount>
    <ResultsDirectory>.\TestResults</ResultsDirectory>
    <TargetPlatform>x64</TargetPlatform>
    <TargetFrameworkVersion>.NETFramework,Version=v4.7.2</TargetFrameworkVersion>
    <DisableParallelization>false</DisableParallelization> 
  </RunConfiguration>
  <MSTest>
    <TestTimeout>360000</TestTimeout>
    <Parallelize>
      <Workers>10</Workers>
      <Scope>MethodLevel</Scope>
    </Parallelize>
  </MSTest>
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="blame" enabled="True">
        <Configuration>
          <ResultsDirectory>.\TestResults</ResultsDirectory>
          <CollectDump />
          <CollectDump />
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
  <LoggerRunSettings>
    <Loggers>
      <Logger friendlyName="blame" enabled="True" />
    </Loggers>
  </LoggerRunSettings>
</RunSettings> 

I have tried to catch the exception with decorating the method responsible for the exception using the decorators "[HandleProcessCorruptedStateExceptions, SecurityCritical] but without success :( .

SedkiHergli commented 4 years ago

Downgrading to mstest v1 everything works fine, it seems related to the QTAgent process because only mstest v1 launch QTAgent process through testhost process. ​ ​Thks for help :)