Я получаю внутренние ошибки в Coverity при создании проекта C ++ 11. Журнал показывает ошибки как это:
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 (что хорошо, так как для этого нужно использовать FE на основе Clang, а не FE на основе EDG).
Один из оскорбительных сборников:
/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, поэтому, похоже, оно представляет ранее неизвестную проблему в FE на основе EDG. Если бы вы могли создать репродуктор и отправить его [email protected]
это будет очень цениться; внутренние ошибки, такие как это устранение ошибок Coverity и, как правило, высокий приоритет для исправления.
После того как кодовая конструкция, вызывающая утверждение, будет идентифицирована, можно будет обойти ее (например, с помощью --ppp_translator
).
Следующие шаги могут помочь вам создать репродуктор:
$ cov-manage-emit --dir <idir> -tp 'failure()' list
(выберите один из списка сбоев, который соответствует внутреннему утверждению, которое вы видите в журнале сборки, запишите номер TU)
$ cov-manage-emit --dir <idir> --tu <TU> reduce
(уменьшенный файл будет помещен в / output / preprocessed).
Других решений пока нет …