From 21615ebe39314f7e873e5acafe5e5b3f4331dac6 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Wed, 17 Jul 2024 17:41:12 +0200 Subject: [PATCH] syz-manager: still ignore log parse problems It seems that this error may come up in absolutely valid and reasonable cases. Restore the special casing. --- pkg/repro/repro.go | 4 +++- syz-manager/manager.go | 7 +++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/pkg/repro/repro.go b/pkg/repro/repro.go index 31958c8f7594..bce3563e638c 100644 --- a/pkg/repro/repro.go +++ b/pkg/repro/repro.go @@ -81,11 +81,13 @@ func Run(crashLog []byte, cfg *mgrconfig.Config, features flatrpc.Feature, repor return ctx.run() } +var ErrEmptyCrashLog = errors.New("no programs") + func prepareCtx(crashLog []byte, cfg *mgrconfig.Config, features flatrpc.Feature, reporter *report.Reporter, exec execInterface) (*reproContext, error) { entries := cfg.Target.ParseLog(crashLog) if len(entries) == 0 { - return nil, fmt.Errorf("crash log (%d bytes) does not contain any programs", len(crashLog)) + return nil, fmt.Errorf("log (%d bytes) parse failed: %w", len(crashLog), ErrEmptyCrashLog) } crashStart := len(crashLog) crashTitle, crashType := "", crash.UnknownType diff --git a/syz-manager/manager.go b/syz-manager/manager.go index 7f04d29e9605..6ff42bceb56b 100644 --- a/syz-manager/manager.go +++ b/syz-manager/manager.go @@ -457,8 +457,11 @@ func reportReproError(err error) { default: } - switch err { - case repro.ErrNoVMs: + if errors.Is(err, repro.ErrEmptyCrashLog) { + // The kernel could have crashed before we executed any programs. + log.Logf(0, "repro failed: %v", err) + return + } else if errors.Is(err, repro.ErrNoVMs) { // This error is to be expected if we're shutting down. if shutdown { return