簡體   English   中英

Sonar-msbuild-runner退出時出現255錯誤,Faulting CLR Module

[英]Sonar-msbuild-runner exits with 255 error, Faulting CLR Module

問題

所以,我們遇到了一個非常奇怪的問題。 目前這是我們的情況。 我們有兩個構建服務器連接到兩個TFS集合

  • 集合A有一個安裝了Windows Server 2012 R2的構建服務器
  • 集合B有一個安裝了Windows Server 2008 R2的構建服務器。

兩台服務器都安裝了sonar-msbuild-runner。 在Collection A上一切正常,但在Collection B上的構建服務器上執行分析時,會出現以下錯誤。

Faulting application name: SonarQube.MSBuild.PostProcessor.exe, version: .9.0.0, time stamp: 0x559d2baa
Faulting module name: clr.dll, version: 4.0.30319.34209, time stamp: 0x5348961e
Exception code: 0xc0000005
Fault offset: 0x00002d1f
Faulting process id: 0x11ec
Faulting application start time: 0x01d0bf9ffbb54cab
Faulting application path: D:\PathToSolutionFolderOnBuildServer\.sonarqube\bin\SonarQube.MSBuild.PostProcessor.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Report Id: 3cbfce4b-2b93-11e5-b84b-0050569a7ef0

我們在Github上檢索了最新版本,並添加了額外的日志記錄,以找出導致錯誤的行。 這條線造成了問題

再現

我能夠在運行Windows 7的本地開發機器上使用以下代碼重現此錯誤。 在第一個Assert上設置調試點然后通過將鼠標懸停在它上面來嘗試訪問projectName屬性時,它將導致我的整個Visual Studio崩潰。

[TestMethod]
public void TestMethod1()
{
    using (TfsTeamProjectCollection collection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://tfs-url:8080/tfs/collectionname/")))
    {
        IBuildServer buildServer = collection.GetService<IBuildServer>();
        string uri = "vstfs:///Build/Build/4238";
        var buildUri = new Uri(uri);
        IBuildDetail build = buildServer.GetMinimalBuildDetails(buildUri);
        string projectName = build.TeamProject;

        ITestManagementService tcm = collection.GetService<ITestManagementService>();
        ITestManagementTeamProject testProject = tcm.GetTeamProject(projectName);

        Assert.IsNotNull(testProject);
        IBuildCoverage[] coverage = testProject.CoverageAnalysisManager.QueryBuildCoverage(uri, CoverageQueryFlags.Modules);
        Assert.IsTrue(coverage.Length > 0);

    }
}

導致以下錯誤消息:

Faulting application name: devenv.exe, version: 12.0.31101.0, time stamp: 0x54548724
Faulting module name: clr.dll, version: 4.0.30319.34209, time stamp: 0x5348961e
Exception code: 0xc0000005
Fault offset: 0x004c2b43
Faulting process id: 0x10e4
Faulting application start time: 0x01d0bf9ec962fde0
Faulting application path: C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Report Id: 14f6496d-2b9b-11e5-a293-083e8ea0a055

可能解決方案

該錯誤直接導致這篇知識庫文章 我們無法應用此修復程序。

此外,我們刪除了.NET框架4,因為已經安裝了4.5.2版,我們認為它可能會相互沖突。 現在只有4.5.1和4.5.2仍然安裝在構建服務器上,我們不確定解決方案是什么。 作為最后一個選項,我們正在考慮將集合B上的構建服務器升級到Windows Server 2012 R2,以確定這是否可以作為解決方案。

編輯:已修復

由於內部錯誤,VS2013已卸載。 所以我們不得不重新安裝VS2013並更新4.我們還升級到1.0版。 這似乎解決了這個問題。 現在可以在我們的門戶網站上找到代碼覆蓋率。

這看起來像.NET框架中的問題/錯誤,正如您也調查過的那樣。 如果您可以升級到Windows Server 2012 R2,那么這將是最好的方法。

sonar-msbuild-runner還有一個解決方法:您可以通過設置環境變量來禁用代碼覆蓋檢索:SQ_SkipLegacyCodeCoverage。 但是,如果你這樣做,SonarQube將無法獲得代碼覆蓋率數據......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM