aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/fuzzer/job.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2024-07-01 14:26:05 +0200
committerDmitry Vyukov <dvyukov@google.com>2024-08-02 13:16:51 +0000
commit66fcb0a84fcd55ad8e1444cdd0bc0ad6592f7329 (patch)
tree998e52d5569938e0251da1eb7c54c3746186b488 /pkg/fuzzer/job.go
parent1e9c4cf3ae82ef82220af312606fffe65e124563 (diff)
pkg/fuzzer: try to triage on different VMs
Distribute triage requests to different VMs.
Diffstat (limited to 'pkg/fuzzer/job.go')
-rw-r--r--pkg/fuzzer/job.go12
1 files changed, 8 insertions, 4 deletions
diff --git a/pkg/fuzzer/job.go b/pkg/fuzzer/job.go
index 8586c6861..85d2dcfe6 100644
--- a/pkg/fuzzer/job.go
+++ b/pkg/fuzzer/job.go
@@ -54,10 +54,11 @@ func mutateProgRequest(fuzzer *Fuzzer, rnd *rand.Rand) *queue.Request {
// During triage we understand if these programs in fact give new coverage,
// and if yes, minimize them and add to corpus.
type triageJob struct {
- p *prog.Prog
- flags ProgFlags
- fuzzer *Fuzzer
- queue queue.Executor
+ p *prog.Prog
+ executor queue.ExecutorID
+ flags ProgFlags
+ fuzzer *Fuzzer
+ queue queue.Executor
// Set of calls that gave potential new coverage.
calls map[int]*triageCall
}
@@ -179,6 +180,7 @@ func (job *triageJob) handleCall(call int, info *triageCall) {
}
func (job *triageJob) deflake(exec func(*queue.Request, ProgFlags) *queue.Result) (stop bool) {
+ avoid := []queue.ExecutorID{job.executor}
needRuns := deflakeNeedCorpusRuns
if job.fuzzer.Config.Snapshot {
needRuns = deflakeNeedSnapshotRuns
@@ -201,11 +203,13 @@ func (job *triageJob) deflake(exec func(*queue.Request, ProgFlags) *queue.Result
Prog: job.p,
ExecOpts: setFlags(flatrpc.ExecFlagCollectCover | flatrpc.ExecFlagCollectSignal),
ReturnAllSignal: indices,
+ Avoid: avoid,
Stat: job.fuzzer.statExecTriage,
}, progInTriage)
if result.Stop() {
return true
}
+ avoid = append(avoid, result.Executor)
if result.Info == nil {
continue // the program has failed
}