aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2021-03-06 12:31:02 +0100
committerDmitry Vyukov <dvyukov@google.com>2021-03-07 10:47:26 +0100
commit75506d9c65c50a62814b97ce2b1324efc5baca61 (patch)
tree739f11aff4ed2f6a4bed5de7a548baddc3f4aedb
parentc599ed125a8c902bb5085c30741bb65018da423f (diff)
syz-manager: remove stale report files
We rotate crash log/report files so that we don't fill the whole disk. But we only save report file if it's not empty. As the result during rotation it's possible to save a new log, but leave an old report in place. Which leads to a confusing combination. Remove report file is the report is empty.
-rw-r--r--syz-manager/manager.go21
1 files changed, 11 insertions, 10 deletions
diff --git a/syz-manager/manager.go b/syz-manager/manager.go
index ca28efdac..f5ca0d647 100644
--- a/syz-manager/manager.go
+++ b/syz-manager/manager.go
@@ -748,17 +748,18 @@ func (mgr *Manager) saveCrash(crash *Crash) bool {
oldestTime = info.ModTime()
}
}
- osutil.WriteFile(filepath.Join(dir, fmt.Sprintf("log%v", oldestI)), crash.Output)
- if mgr.cfg.Tag != "" {
- osutil.WriteFile(filepath.Join(dir, fmt.Sprintf("tag%v", oldestI)), []byte(mgr.cfg.Tag))
- }
- if len(crash.Report.Report) > 0 {
- osutil.WriteFile(filepath.Join(dir, fmt.Sprintf("report%v", oldestI)), crash.Report.Report)
- }
- if len(crash.machineInfo) > 0 {
- osutil.WriteFile(filepath.Join(dir, fmt.Sprintf("machineInfo%v", oldestI)), crash.machineInfo)
+ writeOrRemove := func(name string, data []byte) {
+ filename := filepath.Join(dir, name+fmt.Sprint(oldestI))
+ if len(data) == 0 {
+ os.Remove(filename)
+ return
+ }
+ osutil.WriteFile(filename, data)
}
-
+ writeOrRemove("log", crash.Output)
+ writeOrRemove("tag", []byte(mgr.cfg.Tag))
+ writeOrRemove("report", crash.Report.Report)
+ writeOrRemove("machineInfo", crash.machineInfo)
return mgr.needLocalRepro(crash)
}