aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2024-07-01 15:52:47 +0200
committerDmitry Vyukov <dvyukov@google.com>2024-07-15 14:02:00 +0000
commitefee4ed2240b89b4959ac8a0490a88f26e7ab506 (patch)
tree93ed7c883816530385b1776229ffa978fd9cf9e4
parentb930f376a2e25f0db4fa2086cd2efc224aa50f8a (diff)
pkg/fuzzer: deflake hints 3 times instead of 2
Hints can produce insane amounts of candidates (up to 30K). So run deflaking one more time, even if it reduces amount of candidates by few percents, it's still profitable.
-rw-r--r--pkg/fuzzer/job.go14
1 files changed, 7 insertions, 7 deletions
diff --git a/pkg/fuzzer/job.go b/pkg/fuzzer/job.go
index d1397c5b2..37aaef7d4 100644
--- a/pkg/fuzzer/job.go
+++ b/pkg/fuzzer/job.go
@@ -390,27 +390,27 @@ type hintsJob struct {
}
func (job *hintsJob) run(fuzzer *Fuzzer) {
- // First execute the original program twice to get comparisons from KCOV.
- // The second execution lets us filter out flaky values, which seem to constitute ~30-40%.
+ // First execute the original program several times to get comparisons from KCOV.
+ // Additional executions lets us filter out flaky values, which seem to constitute ~30-40%.
p := job.p
var comps prog.CompMap
- for i := 0; i < 2; i++ {
+ for i := 0; i < 3; i++ {
result := fuzzer.execute(job.exec, &queue.Request{
Prog: p,
ExecOpts: setFlags(flatrpc.ExecFlagCollectComps),
Stat: fuzzer.statExecSeed,
})
- if result.Stop() || result.Info == nil {
+ if result.Stop() {
return
}
+ if result.Info == nil || len(result.Info.Calls[job.call].Comps) == 0 {
+ continue
+ }
got := make(prog.CompMap)
for _, cmp := range result.Info.Calls[job.call].Comps {
got.AddComp(cmp.Op1, cmp.Op2)
}
- if len(got) == 0 {
- return
- }
if i == 0 {
comps = got
} else {