aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2023-05-24 15:01:43 +0200
committerAleksandr Nogikh <wp32pw@gmail.com>2023-05-25 11:45:51 +0200
commitb247b6b84a9681b3bb8bddd3a31d81d3424cc0a3 (patch)
treebd043c70f0f5717926891db15edfe41096ef2403
parent49dc4c1546f711b5aa2134024afee756f7c63097 (diff)
pkg/report: don't record error for empty repro log case
It's not entirely normal, but it can still happen and it's not a big problem by itself. Let's not pollute our error logs.
-rw-r--r--pkg/repro/repro.go5
-rw-r--r--syz-manager/manager.go13
2 files changed, 16 insertions, 2 deletions
diff --git a/pkg/repro/repro.go b/pkg/repro/repro.go
index d614cdfb6..2887bcebd 100644
--- a/pkg/repro/repro.go
+++ b/pkg/repro/repro.go
@@ -5,6 +5,7 @@ package repro
import (
"bytes"
+ "errors"
"fmt"
"sort"
"sync"
@@ -59,6 +60,8 @@ type context struct {
timeouts targets.Timeouts
}
+var ErrNoPrograms = errors.New("crash log does not contain any programs")
+
func Run(crashLog []byte, cfg *mgrconfig.Config, features *host.Features, reporter *report.Reporter,
vmPool *vm.Pool, vmIndexes []int) (*Result, *Stats, error) {
if len(vmIndexes) == 0 {
@@ -66,7 +69,7 @@ func Run(crashLog []byte, cfg *mgrconfig.Config, features *host.Features, report
}
entries := cfg.Target.ParseLog(crashLog)
if len(entries) == 0 {
- return nil, nil, fmt.Errorf("crash log does not contain any programs")
+ return nil, nil, ErrNoPrograms
}
crashStart := len(crashLog)
crashTitle, crashType := "", report.Unknown
diff --git a/syz-manager/manager.go b/syz-manager/manager.go
index b3a266bfa..7c37dd0ac 100644
--- a/syz-manager/manager.go
+++ b/syz-manager/manager.go
@@ -437,7 +437,7 @@ func (mgr *Manager) vmLoop() {
log.Logf(1, "loop: repro on %+v finished '%v', repro=%v crepro=%v desc='%v'",
res.instances, res.report0.Title, res.repro != nil, crepro, title)
if res.err != nil {
- log.Errorf("repro failed: %v", res.err)
+ reportReproError(res.err)
}
delete(reproducing, res.report0.Title)
if res.repro == nil {
@@ -468,6 +468,17 @@ func (mgr *Manager) vmLoop() {
}
}
+func reportReproError(err error) {
+ switch err {
+ case repro.ErrNoPrograms:
+ // This is not extraordinary as programs are collected via SSH.
+ log.Logf(0, "repro failed: %v", err)
+ default:
+ // Report everything else as errors.
+ log.Errorf("repro failed: %v", err)
+ }
+}
+
func (mgr *Manager) runRepro(crash *Crash, vmIndexes []int, putInstances func(...int)) *ReproResult {
features := mgr.checkResult.Features
res, stats, err := repro.Run(crash.Output, mgr.cfg, features, mgr.reporter, mgr.vmPool, vmIndexes)