aboutsummaryrefslogtreecommitdiffstats
path: root/syz-cluster
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2025-08-29 16:15:25 +0200
committerAleksandr Nogikh <nogikh@google.com>2025-09-02 10:36:02 +0000
commit1ff8826d17650075208d857464a59b6518a4793c (patch)
tree79b52fc38f95c6262ca82c3bfa76af77c26dbfb5 /syz-cluster
parent807a3b61ca22f8988561c180eb47268ea6e244db (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.go16
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,