diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2024-05-31 18:24:18 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2024-06-03 15:04:36 +0000 |
| commit | dbc22b60dbf270f3238040e88eed24bab0b990cf (patch) | |
| tree | ac8133d5121dac220ba800d2aea0e279ae496d33 /pkg | |
| parent | 060bb1abe2d1541db9f1a47b8affdf219eb90b57 (diff) | |
pkg/fuzzer: don't keep whole call info for triage jobs
It can be large and we need just errno. Store just it.
Diffstat (limited to 'pkg')
| -rw-r--r-- | pkg/fuzzer/fuzzer.go | 2 | ||||
| -rw-r--r-- | pkg/fuzzer/job.go | 10 | ||||
| -rw-r--r-- | pkg/fuzzer/job_test.go | 1 |
3 files changed, 6 insertions, 7 deletions
diff --git a/pkg/fuzzer/fuzzer.go b/pkg/fuzzer/fuzzer.go index 44aad6010..f3de65e03 100644 --- a/pkg/fuzzer/fuzzer.go +++ b/pkg/fuzzer/fuzzer.go @@ -189,7 +189,7 @@ func (fuzzer *Fuzzer) triageProgCall(p *prog.Prog, info *flatrpc.CallInfo, call fuzzer.startJob(stat, &triageJob{ p: p.Clone(), call: call, - info: info, + errno: info.Error, newSignal: newMaxSignal, flags: flags, queue: queue.Append(), diff --git a/pkg/fuzzer/job.go b/pkg/fuzzer/job.go index 505feb28c..ef89f1f31 100644 --- a/pkg/fuzzer/job.go +++ b/pkg/fuzzer/job.go @@ -57,7 +57,7 @@ func mutateProgRequest(fuzzer *Fuzzer, rnd *rand.Rand) *queue.Request { type triageJob struct { p *prog.Prog call int - info *flatrpc.CallInfo + errno int32 newSignal signal.Signal flags ProgFlags fuzzer *Fuzzer @@ -147,7 +147,7 @@ func (job *triageJob) deflake(exec func(*queue.Request, ProgFlags) *queue.Result stop = true return } - if !reexecutionSuccess(result.Info, job.info, job.call) { + if !reexecutionSuccess(result.Info, job.errno, job.call) { // The call was not executed or failed. continue } @@ -197,7 +197,7 @@ func (job *triageJob) minimize(newSignal signal.Signal) (stop bool) { return false } info := result.Info - if !reexecutionSuccess(info, job.info, call1) { + if !reexecutionSuccess(info, job.errno, call1) { // The call was not executed or failed. continue } @@ -211,14 +211,14 @@ func (job *triageJob) minimize(newSignal signal.Signal) (stop bool) { return stop } -func reexecutionSuccess(info *flatrpc.ProgInfo, oldInfo *flatrpc.CallInfo, call int) bool { +func reexecutionSuccess(info *flatrpc.ProgInfo, oldErrno int32, call int) bool { if info == nil || len(info.Calls) == 0 { return false } if call != -1 { // Don't minimize calls from successful to unsuccessful. // Successful calls are much more valuable. - if oldInfo.Error == 0 && info.Calls[call].Error != 0 { + if oldErrno == 0 && info.Calls[call].Error != 0 { return false } return len(info.Calls[call].Signal) != 0 diff --git a/pkg/fuzzer/job_test.go b/pkg/fuzzer/job_test.go index 6cb983f48..a00545ae1 100644 --- a/pkg/fuzzer/job_test.go +++ b/pkg/fuzzer/job_test.go @@ -85,7 +85,6 @@ func TestDeflake(t *testing.T) { t.Run(fmt.Sprint(i), func(t *testing.T) { testJob := &triageJob{ p: prog, - info: &flatrpc.CallInfo{}, newSignal: test.NewSignal, } |
