From e38e134c4df9e4b637ba5140cff0904ebe5491b1 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Tue, 9 Apr 2024 10:53:37 +0200 Subject: pkg/fuzzer: deflake against new signal We don't want to reach just any stable signal, we know the specific new signal that we target. The previous approach might have reduced the efficiency of the new deflake() approach. --- pkg/fuzzer/job.go | 7 ++++--- pkg/fuzzer/job_test.go | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) (limited to 'pkg/fuzzer') diff --git a/pkg/fuzzer/job.go b/pkg/fuzzer/job.go index 2086016bf..5f734a945 100644 --- a/pkg/fuzzer/job.go +++ b/pkg/fuzzer/job.go @@ -186,11 +186,12 @@ func (job *triageJob) deflake(exec func(job, *Request) *Result, stat *stats.Val, ) signals := make([]signal.Signal, needRuns) for i := 0; i < maxRuns; i++ { - if signals[needRuns-1].Len() > 0 { - // We've already got signal common to needRuns. + if job.newSignal.IntersectsWith(signals[needRuns-1]) { + // We already have the right deflaked signal. break } - if left := maxRuns - i; left < needRuns && signals[needRuns-left-1].Len() == 0 { + if left := maxRuns - i; left < needRuns && + !job.newSignal.IntersectsWith(signals[needRuns-left-1]) { // There's no chance to get coverage common to needRuns. break } diff --git a/pkg/fuzzer/job_test.go b/pkg/fuzzer/job_test.go index 70efc0bb6..cdf46186d 100644 --- a/pkg/fuzzer/job_test.go +++ b/pkg/fuzzer/job_test.go @@ -24,7 +24,7 @@ func TestDeflakeFail(t *testing.T) { testJob := &triageJob{ p: prog, info: ipc.CallInfo{}, - newSignal: signal.FromRaw([]uint32{0, 1, 2}, 0), + newSignal: signal.FromRaw([]uint32{0, 1, 2, 3, 4}, 0), } run := 0 -- cgit mrf-deployment