Fix caching logic for CachedOnDiskCorpus #3408
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Prior to this fix, the
CachedOnDiskCorpus
will load the input to the test case when it wasget
from the corpus. However, this is not the correct timing to load the input for the test case, as there is another functionload_input_into
for that.Some schedulers (e.g.,
WeightedScheduler
) will traverse all the test cases in the corpus to compute the score (using only their metadata). This will made all the input being loaded from the disk even though they are not needed. In this case, the fuzzer will be bounded by the disk I/O for loading the inputs from the disk.LibAFL/crates/libafl/src/schedulers/weighted.rs
Lines 175 to 180 in 8dd5118
In this PR,
CachedOnDiskCorpus
is made to cache the input only whenload_input_into
is called.Checklist
./scripts/precommit.sh
and addressed all comments./scripts/precommit.sh
reported errors in the crates I didn't touch.