diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2025-08-29 16:15:25 +0200 |
|---|---|---|
| committer | Aleksandr Nogikh <nogikh@google.com> | 2025-09-02 10:36:02 +0000 |
| commit | 1ff8826d17650075208d857464a59b6518a4793c (patch) | |
| tree | 79b52fc38f95c6262ca82c3bfa76af77c26dbfb5 /syz-cluster | |
| parent | 807a3b61ca22f8988561c180eb47268ea6e244db (diff) | |
syz-cluster: log possible findings at the end of fuzzing
It does happen that we detect a bug that was introduced in the patch
series, but we don't report it becase no reliable reproducer was found.
Let's at least log such cases to better understand the scale of the
problem.
10 is an arbitrary cut-off value.
Diffstat (limited to 'syz-cluster')
| -rw-r--r-- | syz-cluster/workflow/fuzz-step/main.go | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/syz-cluster/workflow/fuzz-step/main.go b/syz-cluster/workflow/fuzz-step/main.go index efbbdd3d4..e187f8217 100644 --- a/syz-cluster/workflow/fuzz-step/main.go +++ b/syz-cluster/workflow/fuzz-step/main.go @@ -76,12 +76,26 @@ func main() { status = api.TestError } log.Logf(0, "fuzzing is finished") - log.Logf(0, "status at the end:\n%s", store.PlainTextDump()) + logFinalState(store) if err := reportStatus(ctx, client, status, store); err != nil { app.Fatalf("failed to update the test: %v", err) } } +func logFinalState(store *manager.DiffFuzzerStore) { + log.Logf(0, "status at the end:\n%s", store.PlainTextDump()) + + // There can be findings that we did not report only because we failed + // to come up with a reproducer. + // Let's log such cases so that it's easier to find and manually review them. + const countCutOff = 10 + for _, bug := range store.List() { + if bug.Base.Crashes == 0 && bug.Patched.Crashes >= countCutOff { + log.Logf(0, "possibly patched-only: %s", bug.Title) + } + } +} + var errSkipFuzzing = errors.New("skip") func run(baseCtx context.Context, client *api.Client, timeout time.Duration, |
