Skip to content

upgrade images - #1441

Closed
jonathanmetzman wants to merge 4 commits into
masterfrom
upgrade-images
Closed

jonathanmetzman wants to merge 4 commits into
masterfrom
upgrade-images

Conversation

@jonathanmetzman

Copy link
Copy Markdown
Contributor

No description provided.

@jonathanmetzman

jonathanmetzman commented Sep 28, 2022 •

Copy link
Copy Markdown
Contributor Author

Broken benchmarks:
systemd_fuzz-link-parser - ./fuzz-varlink: error while loading shared libraries: libcap.so.2: cannot open shared object file: No such file or directory
systemd_fuzz-varlink - ./fuzz-varlink: error while loading shared libraries: libcap.so.2: cannot open shared object file: No such file or directory
njs_njs_process_script_fuzzer - can't contact SVN server - maybe refresh the benchmark.
libxslt_xpath - refresh benchmark
openh264_decoder_fuzzer - #6 4.690 E: Package 'libstdc++-5-dev' has no installation candidate #6 4.690 E: Unable to locate package libstdc++-5-dev:i386 #6 4.690 E: Couldn't find any package by regex 'libstdc++-5-dev'
libarchive_libarchive_fuzzer #20 87.41 /usr/bin/ld: /lib/x86_64-linux-gnu/libicuuc.a(umutex.ao): in function 'umtx_init': #20 87.41 (.text+0x3b): undefined reference to 'std::condition_variable::condition_variable()'
ffmpeg_ffmpeg_demuxer_fuzzer - #20 1.319 + cd alsa-lib-1.1.0 alsa-lib-1.1.0.tar #20 1.319 /src/build.sh: line 32: cd: too many arguments

Can't find fuzzer-stats (not broken):
mruby-2018-05-23
openssl_x509
php_php-fuzz-parser-2020-07-25
php_php-fuzz-execute
zstd_stream_decompress
poppler_pdf_fuzzer
grok_grk_decompress_fuzzer

@jonathanmetzman

Copy link
Copy Markdown
Contributor Author

Related: #1353

@jonathanmetzman

Copy link
Copy Markdown
Contributor Author

Blocked on #1504 since we need to update some benchmarks

@maxammann

Copy link
Copy Markdown

Doesn't this depend on switching from Ubuntu 16 to the ubuntu version of the upgraded image versions?

I think the benchmarks build in ubuntu 20 e.g. are not executable on ubuntu xenial.

@jonathanmetzman

Copy link
Copy Markdown
Contributor Author

Doesn't this depend on switching from Ubuntu 16 to the ubuntu version of the upgraded image versions?

I don't think I understand this question, could you please clarify?

I think the benchmarks build in ubuntu 20 e.g. are not executable on ubuntu xenial.

def copy_oss_fuzz_files(project, commit_date, benchmark_dir):
"""Checks out the right files from OSS-Fuzz to build the benchmark based on
|project| and |commit_date|. Then copies them to |benchmark_dir|."""
print('j')

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this useful?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, I will remove it in the other PR, then.

DonggeLiu added a commit that referenced this pull request Oct 19, 2022
@DonggeLiu

DonggeLiu commented Nov 2, 2022 •

Copy link
Copy Markdown
Contributor

systemd_fuzz-{link-parser, varlink}

systemd_fuzz-{link-parser, varlink} - ./fuzz-varlink: error while loading shared libraries: libcap.so.2: cannot open shared object file: No such file or directory

The issue with these two benchmarks is the same: It requires loading libcap.so.2 as a shared library.
This is OK for building, as we can install libcap.so.2 via apt install libcap-dev;
It creates a problem when running, because the runner's docker image does not inherit from the builder, and does not have that shared library.

I reckon this is an issue with the benchmark's code, and not sure if there is an elegant solution from us under the current workflow.
For example, we could install libcap.so.2 in docker/benchmark-runner/Dockerfile or the runner.Dockerfile of each fuzzer that we want to use on these two benchmarks and disable the rest.
However, neither will be elegant.

@DonggeLiu

Copy link
Copy Markdown
Contributor

libpng-1.2.56

This old version works.
I failed to upgrade to version 1.6.38 (libpng-16.38), because our target.cc has identifiers that are not defined in the new version of libpng, e.g. PNG_FLAG_CRC_CRITICAL_MASK.

@jonathanmetzman

Copy link
Copy Markdown
Contributor Author

systemd_fuzz-{link-parser, varlink}

systemd_fuzz-{link-parser, varlink} - ./fuzz-varlink: error while loading shared libraries: libcap.so.2: cannot open shared object file: No such file or directory

The issue with these two benchmarks is the same: It requires loading libcap.so.2 as a shared library. This is OK for building, as we can install libcap.so.2 via apt install libcap-dev; It creates a problem when running, because the runner's docker image does not inherit from the builder, and does not have that shared library.

I reckon this is an issue with the benchmark's code, and not sure if there is an elegant solution from us under the current workflow. For example, we could install libcap.so.2 in docker/benchmark-runner/Dockerfile or the runner.Dockerfile of each fuzzer that we want to use on these two benchmarks and disable the rest. However, neither will be elegant.

You can just update broken benchmarks

@jonathanmetzman

Copy link
Copy Markdown
Contributor Author

libpng-1.2.56

This old version works. I failed to upgrade to version 1.6.38 (libpng-16.38), because our target.cc has identifiers that are not defined in the new version of libpng, e.g. PNG_FLAG_CRC_CRITICAL_MASK.

Maybe delete the benchmark and use the integration script to integrate from oss-fuzz.

@DonggeLiu

Copy link
Copy Markdown
Contributor

libpng-1.2.56

This old version works. I failed to upgrade to version 1.6.38 (libpng-16.38), because our target.cc has identifiers that are not defined in the new version of libpng, e.g. PNG_FLAG_CRC_CRITICAL_MASK.

Maybe delete the benchmark and use the integration script to integrate from oss-fuzz.

Done!

@DonggeLiu

Copy link
Copy Markdown
Contributor

systemd_fuzz-{link-parser, varlink}

systemd_fuzz-{link-parser, varlink} - ./fuzz-varlink: error while loading shared libraries: libcap.so.2: cannot open shared object file: No such file or directory

The issue with these two benchmarks is the same: It requires loading libcap.so.2 as a shared library. This is OK for building, as we can install libcap.so.2 via apt install libcap-dev; It creates a problem when running, because the runner's docker image does not inherit from the builder, and does not have that shared library.
I reckon this is an issue with the benchmark's code, and not sure if there is an elegant solution from us under the current workflow. For example, we could install libcap.so.2 in docker/benchmark-runner/Dockerfile or the runner.Dockerfile of each fuzzer that we want to use on these two benchmarks and disable the rest. However, neither will be elegant.

You can just update broken benchmarks

I was not sure if updating them will fix the error, though.
I documented the reasons above when I was updating both benchmarks.
I will push the updated code (version update + a minor modification), but I am pretty sure that they will fail.

@DonggeLiu

Copy link
Copy Markdown
Contributor

Broken benchmarks: systemd_fuzz-link-parser - ./fuzz-varlink: error while loading shared libraries: libcap.so.2: cannot open shared object file: No such file or directory systemd_fuzz-varlink - ./fuzz-varlink: error while loading shared libraries: libcap.so.2: cannot open shared object file: No such file or directory njs_njs_process_script_fuzzer - can't contact SVN server - maybe refresh the benchmark. libxslt_xpath - refresh benchmark openh264_decoder_fuzzer - #6 4.690 E: Package 'libstdc++-5-dev' has no installation candidate #6 4.690 E: Unable to locate package libstdc++-5-dev:i386 #6 4.690 E: Couldn't find any package by regex 'libstdc++-5-dev' libarchive_libarchive_fuzzer #20 87.41 /usr/bin/ld: /lib/x86_64-linux-gnu/libicuuc.a(umutex.ao): in function 'umtx_init': #20 87.41 (.text+0x3b): undefined reference to 'std::condition_variable::condition_variable()' ffmpeg_ffmpeg_demuxer_fuzzer - #20 1.319 + cd alsa-lib-1.1.0 alsa-lib-1.1.0.tar #20 1.319 /src/build.sh: line 32: cd: too many arguments

Can't find fuzzer-stats (not broken): mruby-2018-05-23 openssl_x509 php_php-fuzz-parser-2020-07-25 php_php-fuzz-execute zstd_stream_decompress poppler_pdf_fuzzer grok_grk_decompress_fuzzer

I reckon all benchmarks in this list have been fixed and updated, except systemd_fuzz-{link-parser, varlink}.

@DonggeLiu DonggeLiu mentioned this pull request Nov 4, 2022
56 of 75 tasks
@DonggeLiu

Copy link
Copy Markdown
Contributor

This is included in #1526 : )

@DonggeLiu DonggeLiu closed this Dec 5, 2022
@jonathanmetzman
jonathanmetzman deleted the upgrade-images branch December 5, 2022 15:00
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

Successfully merging this pull request may close these issues.

3 participants