Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
Lukas-Dresel opened this issue Apr 24, 2023 · 9 comments

Comments

@Lukas-Dresel
Copy link

Lukas-Dresel commented Apr 24, 2023

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.

@Lukas-Dresel
Copy link
Author

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.

@Lukas-Dresel
Copy link
Author

Lukas-Dresel commented Apr 24, 2023

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.

@jonathanmetzman
Copy link
Contributor

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

@DonggeLiu
Copy link
Contributor

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?

@Lukas-Dresel
Copy link
Author

Lukas-Dresel commented Apr 27, 2023

@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.

@Lukas-Dresel
Copy link
Author

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

@DonggeLiu
Copy link
Contributor

DonggeLiu commented Apr 27, 2023

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.

@simran-kathpalia
Copy link

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?

@DonggeLiu
Copy link
Contributor

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 : )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants