fuzzbench icon indicating copy to clipboard operation
fuzzbench copied to clipboard

Archive coverage data alongside corpus archives (from AFL++ fork)

Open addisoncrump opened this issue 1 year ago • 32 comments

Supercedes #2020. Moving so we (AFL++ people) can collaborate on this PR.

From the original:

Currently, only corpora are saved in the archive and the summaries of coverage are provided at the end of the experiment. This change simply incorporates the saving of the coverage data snapshots next to the trial corpus snapshots.

addisoncrump avatar Aug 14 '24 15:08 addisoncrump

@DonggeLiu Can we try to do a baseline experiment with this PR again? :slightly_smiling_face: It is fully rebased to the latest changes.

I will integrate the analysis changes once there is a public baseline to point the analysis example at.

addisoncrump avatar Aug 16 '24 11:08 addisoncrump

/gcbrun run_experiment.py -a --experiment-config /opt/fuzzbench/service/experiment-config.yaml --experiment-name 2024-08-17-2028-bases-1 --fuzzers afl aflplusplus libafl libfuzzer

DonggeLiu avatar Aug 17 '24 01:08 DonggeLiu

Hi @addisoncrump,I started a test exp above. Experiment 2024-08-17-2028-bases-1 data and results will be available later at: The experiment data. The experiment report. The experiment report(experimental).

If it works well and you'd like to run a full exp (23 hours), could you please rebase to adopt this change? I forgot to revert temp changes in a previous PR.

Thanks!

DonggeLiu avatar Aug 17 '24 01:08 DonggeLiu

Rebased. The experiment looks good, all the coverage samples were archived.

addisoncrump avatar Aug 19 '24 01:08 addisoncrump

/gcbrun run_experiment.py -a --experiment-config /opt/fuzzbench/service/experiment-config.yaml --experiment-name 2024-08-19-2028-bases-1 --fuzzers afl aflplusplus libafl libfuzzer

DonggeLiu avatar Aug 19 '24 01:08 DonggeLiu

Experiment 2024-08-19-2028-bases-1 data and results will be available later at: The experiment data. The experiment report. The experiment report(experimental).

DonggeLiu avatar Aug 19 '24 02:08 DonggeLiu

It seems to still not be hitting the measurer...

addisoncrump avatar Aug 19 '24 13:08 addisoncrump

This is a really strange, because 2024-08-19-2028-bases-1 has a list of errors about merging coverage summary: image

But 2024-08-17-2028-bases-1 did not have any: image

DonggeLiu avatar Aug 21 '24 00:08 DonggeLiu

QQ: Is the only thing change between those 2 experiments? image

BTW, I noticed this runtime crash in libafl. I don't think it could cause the failure, but it might be interesting to you: https://storage.googleapis.com/fuzzbench-data/index.html?prefix=2024-08-19-2028-bases-1/experiment-folders/libxml2_xml-libafl/trial-3070882/results/

It did not happen in 2024-08-17-2028-bases-1, maybe because that experiment was very short?

A possible theory: libafl saved some input into its corpus during this crash, which caused measurement failure?

DonggeLiu avatar Aug 21 '24 00:08 DonggeLiu

@tokatoka random libafl crash :upside_down_face:

addisoncrump avatar Aug 21 '24 06:08 addisoncrump

I confirmed that the only difference is that commit, yes.

Let's add some more debugging and run a very short run with all the benchmarks, I guess?

addisoncrump avatar Aug 21 '24 06:08 addisoncrump

ohh i see. so this is why my experiment didn't complete either

tokatoka avatar Aug 21 '24 07:08 tokatoka

A possible theory: libafl saved some input into its corpus during this crash, which caused measurement failure?

but it should not affect other fuzzers such as aflplusplus runs right?

tokatoka avatar Aug 21 '24 07:08 tokatoka

@tokatoka random libafl crash 🙃

can you reproduce? i used the same setup on fuzzbench but cannot reproduce

tokatoka avatar Aug 21 '24 11:08 tokatoka

I updated. @DonggeLiu Could you run the same command again to see if it fixes the problem or not?

tokatoka avatar Aug 21 '24 14:08 tokatoka

/gcbrun run_experiment.py -a --experiment-config /opt/fuzzbench/service/experiment-config.yaml --experiment-name 2024-08-22-2028-bases-1 --fuzzers libafl

DonggeLiu avatar Aug 22 '24 00:08 DonggeLiu

A possible theory: libafl saved some input into its corpus during this crash, which caused measurement failure?

Also running an experiment without libafl to help verify this theory.

DonggeLiu avatar Aug 22 '24 00:08 DonggeLiu

/gcbrun run_experiment.py -a --experiment-config /opt/fuzzbench/service/experiment-config.yaml --experiment-name 2024-08-22-2028-bases-2 --fuzzers afl aflplusplus libfuzzer

DonggeLiu avatar Aug 22 '24 00:08 DonggeLiu

Experiment 2024-08-22-2028-bases-1 data and results will be available later at: The experiment data. The experiment report. The experiment report(experimental).

Experiment 2024-08-22-2028-bases-2 data and results will be available later at: The experiment data. The experiment report. The experiment report(experimental).

DonggeLiu avatar Aug 22 '24 01:08 DonggeLiu

bases-1 seems to be working fine, but bases-2 is not hitting the measurer still.

addisoncrump avatar Aug 22 '24 11:08 addisoncrump

so it looks like the libafl crash is not the cause of this

tokatoka avatar Aug 22 '24 11:08 tokatoka

btw for base-1 it seems all the fuzzers are stuck after 10:45m so it was not a successful run either...

tokatoka avatar Aug 22 '24 16:08 tokatoka

Ops there were a DB issue yesterday which affected both experiments. Let me re-run them

DonggeLiu avatar Aug 23 '24 00:08 DonggeLiu

/gcbrun run_experiment.py -a --experiment-config /opt/fuzzbench/service/experiment-config.yaml --experiment-name 2024-08-23-2028-libafl --fuzzers libafl

DonggeLiu avatar Aug 23 '24 00:08 DonggeLiu

/gcbrun run_experiment.py -a --experiment-config /opt/fuzzbench/service/experiment-config.yaml --experiment-name 2024-08-23-2028-bases --fuzzers afl aflplusplus libfuzzer

DonggeLiu avatar Aug 23 '24 00:08 DonggeLiu

we have experiment-folder but not report. so the measurement is still broken

tokatoka avatar Aug 23 '24 10:08 tokatoka

For the report: 2024-08-23-2028-libafl and 2024-08-23-2028-bases is missing but 2024-08-23-2036-bases-1 (from the other PR) is there

For the experiment-data: nothing is missing.

tokatoka avatar Aug 23 '24 12:08 tokatoka

Btw if the experiment on my branch and https://www.fuzzbench.com/reports/experimental/2024-08-23-dgfuzz/index.html ← this experiment are working. would it be possible that the changes in this PR caused the measurement failure??

tokatoka avatar Aug 23 '24 23:08 tokatoka

Experiment 2024-08-23-2028-libafl data and results will be available later at: The experiment data. The experiment report. The experiment report(experimental).

Experiment 2024-08-23-2028-bases data and results will be available later at: The experiment data. The experiment report. The experiment report(experimental).

DonggeLiu avatar Aug 24 '24 09:08 DonggeLiu

@addisoncrump would this happen to be related to this PR? image

It could be due to this error: image

I think the gsutil rm error is at least benign, because @tokatoka shows 2024-08-23-2036-bases-1 can generate a report:

Btw if the experiment on my branch and https://www.fuzzbench.com/reports/experimental/2024-08-23-dgfuzz/index.html ← this experiment are working. would it be possible that the changes in this PR caused the measurement failure??

and it also has gsutil rm error, but not llvm-profdata error: image image

There was another build error (discussed in #2038, as shown above), but I am sure that one is benign and unrelated to the missing report in the experiment.

DonggeLiu avatar Aug 24 '24 11:08 DonggeLiu