eurecom-s3 / symcc

SymCC: efficient compiler-based symbolic execution
http://www.s3.eurecom.fr/tools/symbolic_execution/symcc.html
GNU General Public License v3.0
773 stars 135 forks source link

Dockerfile fails #43

Closed vanhauser-thc closed 3 years ago

vanhauser-thc commented 3 years ago
$ docker build -t symcc .
[...]
[11/14] Performing build step for 'SymRuntime'
FAILED: SymRuntime-prefix/src/SymRuntime-stamp/SymRuntime-build 
cd /symcc_build/SymRuntime-prefix/src/SymRuntime-build && /usr/bin/cmake --build .
[1/21] Generating Qsym's expr__gen.cpp
[2/21] Generating Qsym's expr__gen.cpp
[3/21] Building CXX object qsym_backend/CMakeFiles/SymRuntime.dir/qsym/qsym/pintool/dependency.cpp.o
[4/21] Building CXX object qsym_backend/CMakeFiles/SymRuntime.dir/qsym/qsym/pintool/allocation.cpp.o
[5/21] Building CXX object qsym_backend/CMakeFiles/SymRuntime.dir/qsym/qsym/pintool/call_stack_manager.cpp.o
[6/21] Building CXX object qsym_backend/CMakeFiles/SymRuntime.dir/qsym/qsym/pintool/third_party/xxhash/xxhash.cpp.o
[7/21] Building CXX object qsym_backend/CMakeFiles/SymRuntime.dir/qsym/qsym/pintool/afl_trace_map.cpp.o
[8/21] Building CXX object qsym_backend/CMakeFiles/SymRuntime.dir/qsym/qsym/pintool/expr_cache.cpp.o
In file included from /symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr_cache.h:4,
                 from /symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr_cache.cpp:1:
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual bool qsym::Expr::printAux(std::ostream&) const':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:318:36: warning: unused parameter 'os' [-Wunused-parameter]
  318 |     virtual bool printAux(ostream& os) const {
      |                           ~~~~~~~~~^~
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual void qsym::Expr::hashAux(XXH32_state_t*)':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:333:41: warning: unused parameter 'state' [-Wunused-parameter]
  333 |     virtual void hashAux(XXH32_state_t* state) { return; }
      |                          ~~~~~~~~~~~~~~~^~~~~
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual bool qsym::Expr::equalAux(const qsym::Expr&) const':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:334:39: warning: unused parameter 'other' [-Wunused-parameter]
  334 |     virtual bool equalAux(const Expr& other) const { return true; }
      |                           ~~~~~~~~~~~~^~~~~
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual z3::expr qsym::ConstantExpr::toZ3ExprRecursively(bool)':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:384:37: warning: unused parameter 'verbose' [-Wunused-parameter]
  384 |   z3::expr toZ3ExprRecursively(bool verbose) override {
      |                                ~~~~~^~~~~~~
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual z3::expr qsym::BoolExpr::toZ3ExprRecursively(bool)':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:485:37: warning: unused parameter 'verbose' [-Wunused-parameter]
  485 |   z3::expr toZ3ExprRecursively(bool verbose) override {
      |                                ~~~~~^~~~~~~
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual z3::expr qsym::ReadExpr::toZ3ExprRecursively(bool)':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:525:37: warning: unused parameter 'verbose' [-Wunused-parameter]
  525 |   z3::expr toZ3ExprRecursively(bool verbose) override {
      |                                ~~~~~^~~~~~~
[9/21] Building CXX object qsym_backend/CMakeFiles/SymRuntime.dir/__/Config.cpp.o
[10/21] Building CXX object qsym_backend/CMakeFiles/SymRuntime.dir/qsym/qsym/pintool/logging.cpp.o
In file included from /symcc_source/runtime/qsym_backend/qsym/qsym/pintool/solver.h:13,
                 from /symcc_source/runtime/qsym_backend/qsym/qsym/pintool/logging.cpp:6:
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual bool qsym::Expr::printAux(std::ostream&) const':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:318:36: warning: unused parameter 'os' [-Wunused-parameter]
  318 |     virtual bool printAux(ostream& os) const {
      |                           ~~~~~~~~~^~
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual void qsym::Expr::hashAux(XXH32_state_t*)':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:333:41: warning: unused parameter 'state' [-Wunused-parameter]
  333 |     virtual void hashAux(XXH32_state_t* state) { return; }
      |                          ~~~~~~~~~~~~~~~^~~~~
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual bool qsym::Expr::equalAux(const qsym::Expr&) const':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:334:39: warning: unused parameter 'other' [-Wunused-parameter]
  334 |     virtual bool equalAux(const Expr& other) const { return true; }
      |                           ~~~~~~~~~~~~^~~~~
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual z3::expr qsym::ConstantExpr::toZ3ExprRecursively(bool)':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:384:37: warning: unused parameter 'verbose' [-Wunused-parameter]
  384 |   z3::expr toZ3ExprRecursively(bool verbose) override {
      |                                ~~~~~^~~~~~~
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual z3::expr qsym::BoolExpr::toZ3ExprRecursively(bool)':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:485:37: warning: unused parameter 'verbose' [-Wunused-parameter]
  485 |   z3::expr toZ3ExprRecursively(bool verbose) override {
      |                                ~~~~~^~~~~~~
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual z3::expr qsym::ReadExpr::toZ3ExprRecursively(bool)':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:525:37: warning: unused parameter 'verbose' [-Wunused-parameter]
  525 |   z3::expr toZ3ExprRecursively(bool verbose) override {
      |                                ~~~~~^~~~~~~
[11/21] Building CXX object qsym_backend/CMakeFiles/SymRuntime.dir/qsym/qsym/pintool/third_party/llvm/range.cpp.o
[12/21] Building CXX object qsym_backend/CMakeFiles/SymRuntime.dir/qsym/qsym/pintool/expr_evaluate.cpp.o
In file included from /symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr_cache.h:4,
                 from /symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr_builder.h:6,
                 from /symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr_evaluate.cpp:1:
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual bool qsym::Expr::printAux(std::ostream&) const':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:318:36: warning: unused parameter 'os' [-Wunused-parameter]
  318 |     virtual bool printAux(ostream& os) const {
      |                           ~~~~~~~~~^~
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual void qsym::Expr::hashAux(XXH32_state_t*)':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:333:41: warning: unused parameter 'state' [-Wunused-parameter]
  333 |     virtual void hashAux(XXH32_state_t* state) { return; }
      |                          ~~~~~~~~~~~~~~~^~~~~
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual bool qsym::Expr::equalAux(const qsym::Expr&) const':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:334:39: warning: unused parameter 'other' [-Wunused-parameter]
  334 |     virtual bool equalAux(const Expr& other) const { return true; }
      |                           ~~~~~~~~~~~~^~~~~
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual z3::expr qsym::ConstantExpr::toZ3ExprRecursively(bool)':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:384:37: warning: unused parameter 'verbose' [-Wunused-parameter]
  384 |   z3::expr toZ3ExprRecursively(bool verbose) override {
      |                                ~~~~~^~~~~~~
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual z3::expr qsym::BoolExpr::toZ3ExprRecursively(bool)':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:485:37: warning: unused parameter 'verbose' [-Wunused-parameter]
  485 |   z3::expr toZ3ExprRecursively(bool verbose) override {
      |                                ~~~~~^~~~~~~
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual z3::expr qsym::ReadExpr::toZ3ExprRecursively(bool)':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:525:37: warning: unused parameter 'verbose' [-Wunused-parameter]
  525 |   z3::expr toZ3ExprRecursively(bool verbose) override {
      |                                ~~~~~^~~~~~~
[13/21] Building CXX object qsym_backend/CMakeFiles/SymRuntime.dir/__/Shadow.cpp.o
[14/21] Building CXX object qsym_backend/CMakeFiles/SymRuntime.dir/__/RuntimeCommon.cpp.o
[15/21] Building CXX object qsym_backend/CMakeFiles/SymRuntime.dir/__/GarbageCollection.cpp.o
[16/21] Building CXX object qsym_backend/CMakeFiles/SymRuntime.dir/Runtime.cpp.o
FAILED: qsym_backend/CMakeFiles/SymRuntime.dir/Runtime.cpp.o 
/usr/bin/c++  -DSymRuntime_EXPORTS -I/symcc_source/runtime/qsym_backend -I/symcc_source/runtime/qsym_backend/.. -isystem /usr/lib/llvm-10/include -isystem /symcc_source/runtime/qsym_backend/qsym/qsym/pintool -std=c++17 -Wredundant-decls -Wcast-align -Wmissing-include-dirs -Wswitch-default -Wextra -Wall -Winvalid-pch -Wredundant-decls -Wformat=2 -Wmissing-format-attribute -Wformat-nonliteral -O2 -g -DNDEBUG -fPIC   -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -MD -MT qsym_backend/CMakeFiles/SymRuntime.dir/Runtime.cpp.o -MF qsym_backend/CMakeFiles/SymRuntime.dir/Runtime.cpp.o.d -o qsym_backend/CMakeFiles/SymRuntime.dir/Runtime.cpp.o -c /symcc_source/runtime/qsym_backend/Runtime.cpp
/symcc_source/runtime/qsym_backend/Runtime.cpp:71:14: error: conflicting declaration 'z3::context* qsym::g_z3_context'
   71 | z3::context *g_z3_context;
      |              ^~~~~~~~~~~~
In file included from /symcc_source/runtime/qsym_backend/Runtime.cpp:55:
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/solver.h:20:20: note: previous declaration as 'z3::context qsym::g_z3_context'
   20 | extern z3::context g_z3_context;
      |                    ^~~~~~~~~~~~
/symcc_source/runtime/qsym_backend/Runtime.cpp: In function 'void _sym_initialize()':
/symcc_source/runtime/qsym_backend/Runtime.cpp:174:34: error: no match for 'operator=' (operand types are 'z3::context' and 'z3::context*')
  174 |   g_z3_context = new z3::context{};
      |                                  ^
In file included from /symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:12,
                 from /symcc_source/runtime/qsym_backend/Runtime.h:18,
                 from /symcc_source/runtime/qsym_backend/Runtime.cpp:19:
/usr/include/z3++.h:168:19: note: candidate: 'z3::context& z3::context::operator=(const z3::context&)'
  168 |         context & operator=(context const & s);
      |                   ^~~~~~~~
/usr/include/z3++.h:168:45: note:   no known conversion for argument 1 from 'z3::context*' to 'const z3::context&'
  168 |         context & operator=(context const & s);
      |                             ~~~~~~~~~~~~~~~~^
[17/21] Building CXX object qsym_backend/CMakeFiles/SymRuntime.dir/expr__gen.cpp.o
qsym_backend/expr__gen.cpp: In member function 'virtual void qsym::ConstantExpr::print(std::ostream&, UINT) const':
qsym_backend/expr__gen.cpp:382:44: warning: unused parameter 'depth' [-Wunused-parameter]
  382 | void ConstantExpr::print(ostream& os, UINT depth) const {
      |                                       ~~~~~^~~~~
[18/21] Building CXX object qsym_backend/CMakeFiles/SymRuntime.dir/qsym/qsym/pintool/solver.cpp.o
In file included from /symcc_source/runtime/qsym_backend/qsym/qsym/pintool/solver.h:13,
                 from /symcc_source/runtime/qsym_backend/qsym/qsym/pintool/solver.cpp:3:
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual bool qsym::Expr::printAux(std::ostream&) const':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:318:36: warning: unused parameter 'os' [-Wunused-parameter]
  318 |     virtual bool printAux(ostream& os) const {
      |                           ~~~~~~~~~^~
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual void qsym::Expr::hashAux(XXH32_state_t*)':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:333:41: warning: unused parameter 'state' [-Wunused-parameter]
  333 |     virtual void hashAux(XXH32_state_t* state) { return; }
      |                          ~~~~~~~~~~~~~~~^~~~~
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual bool qsym::Expr::equalAux(const qsym::Expr&) const':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:334:39: warning: unused parameter 'other' [-Wunused-parameter]
  334 |     virtual bool equalAux(const Expr& other) const { return true; }
      |                           ~~~~~~~~~~~~^~~~~
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual z3::expr qsym::ConstantExpr::toZ3ExprRecursively(bool)':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:384:37: warning: unused parameter 'verbose' [-Wunused-parameter]
  384 |   z3::expr toZ3ExprRecursively(bool verbose) override {
      |                                ~~~~~^~~~~~~
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual z3::expr qsym::BoolExpr::toZ3ExprRecursively(bool)':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:485:37: warning: unused parameter 'verbose' [-Wunused-parameter]
  485 |   z3::expr toZ3ExprRecursively(bool verbose) override {
      |                                ~~~~~^~~~~~~
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h: In member function 'virtual z3::expr qsym::ReadExpr::toZ3ExprRecursively(bool)':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/expr.h:525:37: warning: unused parameter 'verbose' [-Wunused-parameter]
  525 |   z3::expr toZ3ExprRecursively(bool verbose) override {
      |                                ~~~~~^~~~~~~
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/solver.cpp: In member function 'bool qsym::Solver::isInterestingJcc(qsym::ExprRef, bool, ADDRINT)':
/symcc_source/runtime/qsym_backend/qsym/qsym/pintool/solver.cpp:511:39: warning: unused parameter 'rel_expr' [-Wunused-parameter]
  511 | bool Solver::isInterestingJcc(ExprRef rel_expr, bool taken, ADDRINT pc) {
      |                               ~~~~~~~~^~~~~~~~
[19/21] Building CXX object qsym_backend/CMakeFiles/SymRuntime.dir/__/LibcWrappers.cpp.o
[20/21] Building CXX object qsym_backend/CMakeFiles/SymRuntime.dir/expr_builder__gen.cpp.o
qsym_backend/expr_builder__gen.cpp: In member function 'qsym::ExprRef qsym::SymbolicExprBuilder::createSub(qsym::NonConstantExprRef, qsym::NonConstantExprRef)':
qsym_backend/expr_builder__gen.cpp:827:7: warning: this statement may fall through [-Wimplicit-fallthrough=]
  827 |       if (l->getChild(0)->isConstant()) {
      |       ^~
qsym_backend/expr_builder__gen.cpp:832:5: note: here
  832 |     case Sub: {
      |     ^~~~
ninja: build stopped: subcommand failed.
ninja: build stopped: subcommand failed.
The command '/bin/sh -c cmake -G Ninja         -DQSYM_BACKEND=ON         -DCMAKE_BUILD_TYPE=RelWithDebInfo         -DZ3_TRUST_SYSTEM_VERSION=on         /symcc_source     && ninja check     && cargo install --path /symcc_source/util/symcc_fuzzing_helper' returned a non-zero code: 1
aurelf commented 3 years ago

I couldn't reproduce that. Maybe some dependency problem that appears with many cores? Can you see if the problem persists with something like "--cpuset-cpus 0" ?

vanhauser-thc commented 3 years ago

weird the error is gone ... wtf ... maybe a resource local or remote was not available