aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2024-05-31 18:24:18 +0200
committerDmitry Vyukov <dvyukov@google.com>2024-06-03 15:04:36 +0000
commitdbc22b60dbf270f3238040e88eed24bab0b990cf (patch)
treeac8133d5121dac220ba800d2aea0e279ae496d33 /pkg
parent060bb1abe2d1541db9f1a47b8affdf219eb90b57 (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.go2
-rw-r--r--pkg/fuzzer/job.go10
-rw-r--r--pkg/fuzzer/job_test.go1
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,
}