diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2023-05-24 15:01:43 +0200 |
|---|---|---|
| committer | Aleksandr Nogikh <wp32pw@gmail.com> | 2023-05-25 11:45:51 +0200 |
| commit | b247b6b84a9681b3bb8bddd3a31d81d3424cc0a3 (patch) | |
| tree | bd043c70f0f5717926891db15edfe41096ef2403 | |
| parent | 49dc4c1546f711b5aa2134024afee756f7c63097 (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.go | 5 | ||||
| -rw-r--r-- | syz-manager/manager.go | 13 |
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) |
