【问题标题】:cov-emit process hangs and Coverity build never completescov-emit 进程挂起,Coverity 构建从未完成
【发布时间】:2022-12-12 22:15:40
【问题描述】:

我需要从覆盖构建中排除 C++ 源文件。此文件名为 XMLHelperUtil.cpp,是我正在构建的解决方案中包含的众多 C++ 项目之一的一部分。我尝试将它添加到 XML 配置文件但没有成功。

我做了以下事情:

(1)使用以下命令创建配置文件:

cov-configure --config e:\temp\my_config.xml --msvc --xml-option=skip_file:"XMLHelperUtil.cpp"

这将为 msvc 创建一系列模板,其中包括以下 skip_file 节点:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE coverity SYSTEM "coverity_config.dtd">
<coverity>
<!-- THIS FILE IS AUTOMATICALLY GENERATED - YOU MAY ADD XML ENTITIES -->
<!-- TO UPDATE THE COMPILER CONFIGURATION AFTER THE begin_command_line_config CLOSING TAG. -->
    <cit_version>1</cit_version>
    <config>
      <build>
        <compiler>
          <template_compiler>true</template_compiler>
          <comp_name>devenv</comp_name>
          <comp_translator>msvc_devenv</comp_translator>
          <comp_lang>C</comp_lang>
          <comp_generic>msvc</comp_generic>
        </compiler>
        <options>
          <id>msvc_devenv-devenv-.*</id>
          <opt_preinclude_file>$CONFIGDIR$/../user_nodefs.h</opt_preinclude_file>
          <begin_command_line_config></begin_command_line_config>
          <skip_file>XMLHelperUtil.cpp</skip_file>
        </options>
      </build>
    </config>
    <md5>e471f73f8137b3bb42fd78a4695ff14f</md5>
</coverity>

(2)使用以下命令构建项目:

cov-build --config e:\temp\my_config.xml 
          --dir "E:\cov-int-out" 
          "d:\Program Files\Microsoft Visual Studio\2022\Professional\Msbuild\Current\Bin\MSBuild" 
          "<path>\mysolution.sln" /p:Configuration=Release /p:Platform=x64

文件不会被跳过。我究竟做错了什么?

参考:

更新阅读 build_log.txt 文件,我可以看到该文件实际上被跳过了:

[STATUS] Ignoring file XMLHelperUtil.cpp because file "<path>\XMLHelperUtil.cpp" matches skip_file pattern "XMLHelperUtil"

我可以看到它继续处理其他文件并在此处停止:

..|cov-translate|5052|output|> "FilePath.cpp": using precompiled header file "E:\cov-int\emit\pch\__coverity_ms_pch__1"
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|> "..\PtrRefCtr_.h", line 290: warning #1087: the object has type
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>           qualifiers that are not compatible with the member function
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>           "CPtrRefCtrBase::Validate"
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>             object type is: const CPtrRefCtrBase
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>               Validate();
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>               ^
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|> "..\PtrRefCtr_.h", line 383: warning #442: argument list for class
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>           template "CRefCtrAuto" is missing
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>            CRefCtrCom( Pointee *pObj ): CRefCtrAuto(pObj) { (this)->AddRef(); }
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>                                         ^
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|> catastrophic signal: C0000005 (EXCEPTION_ACCESS_VIOLATION)
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|> tried to read from addr 0x0000000000000064
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|> call stack backtrace:
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|> cov-emit.exe mingw64 2021.9.0
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x0000000000f7f3e0
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00000000004b2167
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x0000000000f7f39d
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x0000000000f7f6fb
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|> KERNELBASE.dll mingw64 2021.9.0
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00000001800e1922
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|> ntdll.dll mingw64 2021.9.0
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00007ff8dc0eec73
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00007ff8dc0d18b6
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00007ff8dc0e2f3d
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00007ff8dc0a4557
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00007ff8dc0e20ca
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|> cov-emit.exe mingw64 2021.9.0
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00000000004b2167
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00000000004f880f
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x0000000000515463
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x0000000000515bb4
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00000000004d77d1
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00000000004f87d8
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00000000004f90ba
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x0000000000560fa0
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x000000000050f98b
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x000000000050fb25
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00000000005110c6
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x0000000000561308
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00000000005154f3
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x0000000000515aa5
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00000000004c0dfd
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00000000004f89d0
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x0000000000515463
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x0000000000515998
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00000000004cee81
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00000000004f85ff
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x0000000000515463
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x0000000000515aa5
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00000000004cee81
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00000000004f85ff
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00000000004f90ba
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x0000000000560fa0
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x000000000051085a
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x0000000000699690
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00000000006aa44c
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x0000000000633fbd
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x0000000000635511
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x000000000063629e
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x0000000000638096
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x0000000000638a7f
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00000000006390ce
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00000000004f06d5
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x0000000000673f02
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00000000006724fa
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x000000000053d079
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x000000000053e51b
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00000000004949ae
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x000000000048e405
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x000000000048e9fe
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x0000000000490e5e
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x00000000004928c3
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|> (last 4 repeated 2 more times)
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|>   0x000000000048e405
..|cov-translate|5052|output|> 
..|cov-translate|5052|output|> WARNING: cov-emit returned with code 4 for FilePath.cpp

在此之后什么也没有发生。有很多cov-emit进程在运行:

如果我开始一次终止一个进程,它会在某个时候重新启动。我看到日志中出现了新内容。虽然控制台中没有新的输出,但在处理了几个文件后它以相同的方式停止。

【问题讨论】:

  • skip_file 应该为此工作;我不清楚为什么它在这里不起作用。你会把你的build.log文件(由cov-build写到中间目录)添加到你的帖子吗?这可能包含一个线索。要获得完整的日志文件,请使用任务管理器杀死挂起的cov-emit(尽管部分日志文件仍然有用)。
  • 这有助于找出文件被跳过并且错误完全不同。请参阅上面我的问题的更新部分。
  • 从日志文件我们可以看到 cov-emit 肯定至少崩溃了一次,你说它也挂了好几次。这些问题可能超出了通过本论坛诊断或修复的可行范围。 (除非您的二进制文件可能已损坏?)我认为您必须向 Synopsys 开具支持票。
  • 我刚刚意识到问题实际上是在我从 Visual Studio 2019 升级到 Visual Studio 2022 之后开始的。问题可能是 MSBuild 或 Coverity 与它的交互。我运行的是 2021.09 版本,并且有更新的版本可用。我会安装那个,看看它的行为是否相同。
  • 我安装的是2021.12.1版本,也是同样的问题。我得到了数百个catastrophic signal: C0000005 (EXCEPTION_ACCESS_VIOLATION)。似乎发生的唯一变化是在这样的崩溃之后产生了一个新的cov-emit进程并且构建继续。我会尝试使用 Synopsys。

标签: coverity


【解决方案1】:

在联系 Synopsys 支持 (https://community.synopsys.com/s/case/5002H00001OYqCTQA1/covemit-hangs-all-the-time) 后,确认挂起的问题是 Coverity 目前缺乏对 Visual Studio 2022 的支持,该支持将在 2022 年的某个时候出现。

【讨论】:

  • 现在问题集中在 Coverity 对 VS 2022 的支持上,我删除了我的其他答案。此外,可以通过在标题中提及 VS 2022 并在正文中指定您正在使用的 Coverity 版本来改进问题(我知道您在评论中说的是 2021.12.1)。
【解决方案2】:

您可以在 cov-analyze 阶段之前跳过非预期文件。使用 emit 命令从 idir 中删除 tu emit 文件。基于 tu 删除,你不会在 cov-analyze 阶段分析这个文件并将问题提交给服务器

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 2016-02-16
    • 1970-01-01
    相关资源
    最近更新 更多