diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2021-03-06 12:31:02 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2021-03-07 10:47:26 +0100 |
| commit | 75506d9c65c50a62814b97ce2b1324efc5baca61 (patch) | |
| tree | 739f11aff4ed2f6a4bed5de7a548baddc3f4aedb | |
| parent | c599ed125a8c902bb5085c30741bb65018da423f (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.go | 21 |
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) } |
