Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(216)

Side by Side Diff: third_party/afl/src/docs/parallel_fuzzing.txt

Issue 2238013002: Roll src/third_party/afl/src/ 2.14b..2.30b (16 versions). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Note in "Local Modifications" that we have removed dictionaries/. Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/afl/src/docs/notes_for_asan.txt ('k') | third_party/afl/src/docs/perf_tips.txt » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 ========================= 1 =========================
2 Tips for parallel fuzzing 2 Tips for parallel fuzzing
3 ========================= 3 =========================
4 4
5 This document talks about synchronizing afl-fuzz jobs on a single machine 5 This document talks about synchronizing afl-fuzz jobs on a single machine
6 or across a fleet of systems. See README for the general instruction manual. 6 or across a fleet of systems. See README for the general instruction manual.
7 7
8 1) Introduction 8 1) Introduction
9 --------------- 9 ---------------
10 10
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 $ ./afl-fuzz -i testcase_dir -o sync_dir -S fuzzer03 [...other stuff...] 44 $ ./afl-fuzz -i testcase_dir -o sync_dir -S fuzzer03 [...other stuff...]
45 45
46 Each fuzzer will keep its state in a separate subdirectory, like so: 46 Each fuzzer will keep its state in a separate subdirectory, like so:
47 47
48 /path/to/sync_dir/fuzzer01/ 48 /path/to/sync_dir/fuzzer01/
49 49
50 Each instance will also periodically rescan the top-level sync directory 50 Each instance will also periodically rescan the top-level sync directory
51 for any test cases found by other fuzzers - and will incorporate them into 51 for any test cases found by other fuzzers - and will incorporate them into
52 its own fuzzing when they are deemed interesting enough. 52 its own fuzzing when they are deemed interesting enough.
53 53
54 The only difference between the -M and -S modes is that the master instance 54 The difference between the -M and -S modes is that the master instance will
55 will still perform deterministic checks; while the secondary instances will 55 still perform deterministic checks; while the secondary instances will
56 proceed straight to random tweaks. If you don't want to do deterministic 56 proceed straight to random tweaks. If you don't want to do deterministic
57 fuzzing at all, it's OK to run all instances with -S. With very slow or complex 57 fuzzing at all, it's OK to run all instances with -S. With very slow or complex
58 targets, or when running heavily parallelized jobs, this is usually a good plan. 58 targets, or when running heavily parallelized jobs, this is usually a good plan.
59 59
60 You can monitor the progress of your jobs from the command line with the 60 Note that running multiple -M instances is wasteful, although there is an
61 experimental support for parallelizing the deterministic checks. To leverage
62 that, you need to create -M instances like so:
63
64 $ ./afl-fuzz -i testcase_dir -o sync_dir -M masterA:1/3 [...]
65 $ ./afl-fuzz -i testcase_dir -o sync_dir -M masterB:2/3 [...]
66 $ ./afl-fuzz -i testcase_dir -o sync_dir -M masterC:3/3 [...]
67
68 ...where the first value after ':' is the sequential ID of a particular master
69 instance (starting at 1), and the second value is the total number of fuzzers to
70 distribute the deterministic fuzzing across. Note that if you boot up fewer
71 fuzzers than indicated by the second number passed to -M, you may end up with
72 poor coverage.
73
74 You can also monitor the progress of your jobs from the command line with the
61 provided afl-whatsup tool. When the instances are no longer finding new paths, 75 provided afl-whatsup tool. When the instances are no longer finding new paths,
62 it's probably time to stop. 76 it's probably time to stop.
63 77
64 WARNING: Exercise caution when explicitly specifying the -f option. Each fuzzer 78 WARNING: Exercise caution when explicitly specifying the -f option. Each fuzzer
65 must use a separate temporary file; otherwise, things will go south. One safe 79 must use a separate temporary file; otherwise, things will go south. One safe
66 example may be: 80 example may be:
67 81
68 $ ./afl-fuzz [...] -S fuzzer10 -f file10.txt ./fuzzed/binary @@ 82 $ ./afl-fuzz [...] -S fuzzer10 -f file10.txt ./fuzzed/binary @@
69 $ ./afl-fuzz [...] -S fuzzer11 -f file11.txt ./fuzzed/binary @@ 83 $ ./afl-fuzz [...] -S fuzzer11 -f file11.txt ./fuzzed/binary @@
70 $ ./afl-fuzz [...] -S fuzzer12 -f file12.txt ./fuzzed/binary @@ 84 $ ./afl-fuzz [...] -S fuzzer12 -f file12.txt ./fuzzed/binary @@
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 - Having some of the fuzzers invoke the binary in different ways. 207 - Having some of the fuzzers invoke the binary in different ways.
194 For example, 'djpeg' supports several DCT modes, configurable with 208 For example, 'djpeg' supports several DCT modes, configurable with
195 a command-line flag, while 'dwebp' supports incremental and one-shot 209 a command-line flag, while 'dwebp' supports incremental and one-shot
196 decoding. In some scenarios, going after multiple distinct modes and then 210 decoding. In some scenarios, going after multiple distinct modes and then
197 pooling test cases will improve coverage. 211 pooling test cases will improve coverage.
198 212
199 - Much less convincingly, running the synchronized fuzzers with different 213 - Much less convincingly, running the synchronized fuzzers with different
200 starting test cases (e.g., progressive and standard JPEG) or dictionaries. 214 starting test cases (e.g., progressive and standard JPEG) or dictionaries.
201 The synchronization mechanism ensures that the test sets will get fairly 215 The synchronization mechanism ensures that the test sets will get fairly
202 homogeneous over time, but it introduces some initial variability. 216 homogeneous over time, but it introduces some initial variability.
OLDNEW
« no previous file with comments | « third_party/afl/src/docs/notes_for_asan.txt ('k') | third_party/afl/src/docs/perf_tips.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698