构建 C++11 代码时 Coverity 中的内部错误

Internal errors in Coverity when building C++11 code

本文关键字:内部 错误 Coverity C++11 代码 构建      更新时间:2023-10-16

我在构建 C++11 项目时在 Coverity 中遇到内部错误。日志显示如下错误:

Internal error #2688: assertion failed at: "edg/src/lower_name.c", line 4810
internal error #2688: assertion failed at: "edg/src/scope_stk.c", line 10898

我正在使用Mac OS X(Sierra)并使用以下命令配置编译器:

cov-configure --comptype clangcxx -co /usr/bin/c++

以下是重现问题的所有步骤:

git clone --recursive -b develop https://github.com/actor-framework/actor-framework.git
cd actor-framework
./configure --build-type=debug --with-runtime-checks --no-opencl --no-python
cov-build --dir "cov-int" make

我已经在这里上传了完整的构建日志(它很大,你已经被警告过了):https://gist.githubusercontent.com/Neverlord/bb5709452236d584fcaabf56c0ae7295/raw/aad490f79b4fa2fab40dd99ffbe9aa75611b2fff/build-log.txt

任何帮助都非常感谢。

我看了一下构建日志,它似乎与您的 Clang 配置无关(这很好,因为这应该使用 Coverity 基于 Clang 的 FE,而不是基于 EDG 的 FE。

其中一个有问题的汇编是:

/opt/local/bin/g++-mp-4.9 -Dlibcaf_core_shared_EXPORTS -I/opt/local/include -I/Users/jenkins/jenkins_home/workspace/CAF/nightly/actor-framework/libcaf_opencl -I/Users/jenkins/jenkins_home/workspace/CAF/nightly/actor-framework/libcaf_core -I/Users/jenkins/jenkins_home/workspace/CAF/nightly/actor-framework/libcaf_io -I/Users/jenkins/jenkins_home/workspace/CAF/nightly/actor-framework/libcaf_test -I/Users/jenkins/jenkins_home/workspace/CAF/nightly/actor-framework/libcaf_core/. -std=c++11 -Wextra -Wall -pedantic -Wno-missing-field-initializers -fPIC -g -fPIC -o CMakeFiles/libcaf_core_shared.dir/src/abstract_coordinator.cpp.o -c /Users/jenkins/jenkins_home/workspace/CAF/nightly/actor-framework/libcaf_core/src/abstract_coordinator.cpp

内部断言似乎不在 Coverity 的错误数据库中,因此这看起来代表了基于 EDG 的 FE 中以前未知的问题。如果您可以创建一个复制器并将其发送给scan-admin@coverity.com,将不胜感激;诸如此类的内部错误会失败Coverity的错误恢复,并且通常是要修复的高优先级。

一旦确定了导致断言的代码结构,就可以解决它(例如,使用--ppp_translator)。

以下步骤可以帮助您创建复制器:

$ cov-manage-emit --dir <idir> -tp 'failure()' list

(从失败列表中选择一个与您在构建日志中看到的内部断言匹配的失败,记下 TU 编号)

$ cov-manage-emit --dir <idir> --tu <TU> reduce

(缩减的文件将放在/output/预处理下)。