google / fuzzbench

FuzzBench - Fuzzer benchmarking as a service.

Home Page:https://google.github.io/fuzzbench/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

symqemu_aflplusplus fails to build with "no installation candidate for libstdc++-5-dev"

Lukas-Dresel opened this issue · comments

As the title says, symqemu_aflplusplus seems to not have been updated with the switch to Ubuntu 20.04 and fails to build with the following error

#6 1.606 Get:11 http://archive.ubuntu.com/ubuntu focal-updates/universe i386 Packages [897 kB]                                                                                        
#6 1.947 Fetched 10.7 MB in 2s (7017 kB/s)                                                                                                                                             
#6 1.947 Reading package lists...                                                                                                                                                      
#6 3.260 Reading package lists...                                                                                                                                                      
#6 4.520 Building dependency tree...                                                                                                                                                   
#6 4.752 Reading state information...
#6 4.776 Package libstdc++-5-dev is not available, but is referred to by another package.
#6 4.776 This may mean that the package is missing, has been obsoleted, or
#6 4.776 is only available from another source               
#6 4.776                                                                                   
#6 4.781 E: Package 'libstdc++-5-dev' has no installation candidate

I'm debugging locally at the moment to find which version is appropriate.

Unfortunately, it seems to be incompatible with the lowest version I could select in apt (which is libstdc++-7-dev).

It errors with a variety of errors, e.g.

or 1st argument                                                                                                                                                                        
#12 11.42       operator<<(double __f)                                                                                                                                                 
#12 11.42       ^                                                                                                                                                                      
#12 11.42 /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/ostream:224:7: note: candidate function not viable: cannot convert argument of incomplete type 'void' to 'float' fo
r 1st argument                                                                                                                                                                         
#12 11.42       operator<<(float __f)                                                                                                                                                  
#12 11.42       ^                                                                                                                                                                      
#12 11.42 /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/ostream:232:7: note: candidate function not viable: cannot convert argument of incomplete type 'void' to 'long doub
le' for 1st argument                                                                                                                                                                   
#12 11.42       operator<<(long double __f)                                                                                                                                            
#12 11.42       ^                                                                          
#12 11.42 /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/ostream:245:7: note: candidate function not viable: cannot convert argument of incomplete type 'void' to 'const voi
d *' for 1st argument
#12 11.42       operator<<(const void* __p)
#12 11.42       ^
#12 11.42 /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/ostream:276:7: note: candidate function not viable: cannot convert argument of incomplete type 'void' to 'std::basi
c_ostream<char>::__streambuf_type *' (aka 'basic_streambuf<char, std::char_traits<char>> *') for 1st argument
#12 11.42       operator<<(__streambuf_type* __sb);
#12 11.42       ^
#12 11.42 In file included from /symcc/build/SymRuntime-prefix/src/SymRuntime-build/qsym_backend/expr_builder__gen.cpp:1:
#12 11.42 In file included from /symcc/runtime/qsym_backend/qsym/qsym/pintool/expr_builder.h:6:
#12 11.42 In file included from /symcc/runtime/qsym_backend/qsym/qsym/pintool/expr_cache.h:4:
#12 11.42 /symcc/runtime/qsym_backend/qsym/qsym/pintool/expr.h:388:55: error: too few arguments to function call, expected at least 3, have 2
#12 11.42       return context_.bv_val(value_.toString(10, false).c_str(), bits_);
#12 11.42                              ~~~~~~~~~~~~~~~          ^
#12 11.42 /usr/local/include/llvm/ADT/APInt.h:1597:8: note: 'toString' declared here
#12 11.42   void toString(SmallVectorImpl<char> &Str, unsigned Radix, bool Signed,
#12 11.42        ^
#12 11.42 In file included from /symcc/build/SymRuntime-prefix/src/SymRuntime-build/qsym_backend/expr_builder__gen.cpp:1:
#12 11.42 In file included from /symcc/runtime/qsym_backend/qsym/qsym/pintool/expr_builder.h:6:
#12 11.42 In file included from /symcc/runtime/qsym_backend/qsym/qsym/pintool/expr_cache.h:4:
#12 11.42 /symcc/runtime/qsym_backend/qsym/qsym/pintool/expr.h:388:56: error: member reference base type 'void' is not a structure or union
#12 11.42       return context_.bv_val(value_.toString(10, false).c_str(), bits_);
#12 11.42                              ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
#12 11.42 7 errors generated.
#12 11.42 ninja: build stopped: subcommand failed.
#12 11.42 ninja: build stopped: subcommand failed.
------

As I'm pushing for a conference deadline at the moment, I unfortunately don't have time to look into this issue further.

I realized that symcc_aflplusplus also relies on, and manages to install, libstdc++-5-dev. I've retried it with their line of

RUN echo "deb http://archive.ubuntu.com/ubuntu bionic main universe"  >> /etc/apt/sources.list

Unfortunately the above compilation errors persist.

I don't think we tried to update every fuzzer when we upgraded.
@alan32liu what do you think? Should we delete this?

I don't think we tried to update every fuzzer when we upgraded. @alan32liu what do you think? Should we delete this?

Yep, I failed to update symcc_afl++ due to outdated and changing dependencies (they only supported clang-10 and were trying to support LLVM-15 back then).

@Lukas-Dresel Does this block your experiment in #1827?

@jonathanmetzman @alan32liu It does not block me, simply because I decided to not evaluate against SymQEMU because of it. However, instead of removing it, I'd be willing to update it to build again after the deadline, because I've already done so for my own project. However, mine also has a few other modifications, so it can't just be dropped in as a replacement.

Since SymCC, SymQEMU and SymSan are the only concolic fuzzers in the benchmark, I'd prefer to see them stay as they are important for concolic execution research to be able to evaluate against

Since SymCC, SymQEMU and SymSan are the only concolic fuzzers in the benchmark, I'd prefer to see them stay as they are important for concolic execution research to be able to evaluate against

Yep, I do want to keep it (and KLEE) as baselines for concolic fuzzers if possible, and did spend some effort trying to make them compatible. I gave up due to the time budget back then.

It would be great if we could work together to revive them when the time is more convenient for you.

Hi, I have a similar issue(in symcc_afl) and am unable to fix it. Is there any issue with the dependencies? Can I fix it by changing the clang version?

Hi, I have a similar issue(in symcc_afl) and am unable to fix it. Is there any issue with the dependencies? Can I fix it by changing the clang version?

I do not have the answer to that, because it has been a long time.
But if you are trying to run fuzzing experiments, please feel free to submit a PR with the change you desire and request an experiment to figure out : )