diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2024-07-16 16:38:20 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2024-07-16 15:06:13 +0000 |
| commit | 74c18f4671cb92f65ed24cac0427b7d83337257e (patch) | |
| tree | 5d21036222d27dde57c2f60f08fcfad258802757 /pkg | |
| parent | 15b2c47cbd15441ae86ec825cca498fc0f256757 (diff) | |
pkg/fuzzer: use the signal union in minimize iterations
During deflake(), we look at the unions of the signal from multiple
iterations. Let's do the same in minimize(), it would be more
consistent.
Diffstat (limited to 'pkg')
| -rw-r--r-- | pkg/fuzzer/job.go | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/pkg/fuzzer/job.go b/pkg/fuzzer/job.go index 37aaef7d4..84d3af930 100644 --- a/pkg/fuzzer/job.go +++ b/pkg/fuzzer/job.go @@ -252,6 +252,7 @@ func (job *triageJob) minimize(call int, info *triageCall) (*prog.Prog, int) { if stop { return false } + var mergedSignal signal.Signal for i := 0; i < minimizeAttempts; i++ { result := job.execute(&queue.Request{ Prog: p1, @@ -268,7 +269,12 @@ func (job *triageJob) minimize(call int, info *triageCall) (*prog.Prog, int) { continue } thisSignal := getSignalAndCover(p1, result.Info, call1) - if info.newStableSignal.Intersection(thisSignal).Len() == info.newStableSignal.Len() { + if mergedSignal.Len() == 0 { + mergedSignal = thisSignal + } else { + mergedSignal.Merge(thisSignal) + } + if info.newStableSignal.Intersection(mergedSignal).Len() == info.newStableSignal.Len() { return true } } |
