aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2019-02-23 08:45:42 +0100
committerDmitry Vyukov <dvyukov@google.com>2019-02-23 08:45:42 +0100
commit18107ce07fa018a31936624088bc0bf37fdd432c (patch)
tree23830a312f2da622c0e94379bd886843d2bb5a99
parentbaad4d3621fe1810df733c5cef0e4ab55c76f054 (diff)
syz-ci: make some manager creation errors non-fatal
If only part of the managers failed to initialize we still can continue running the rest.
-rw-r--r--syz-ci/manager.go8
-rw-r--r--syz-ci/syz-ci.go14
2 files changed, 15 insertions, 7 deletions
diff --git a/syz-ci/manager.go b/syz-ci/manager.go
index 4867216ca..ef2dc9dcf 100644
--- a/syz-ci/manager.go
+++ b/syz-ci/manager.go
@@ -78,7 +78,7 @@ type Manager struct {
stop chan struct{}
}
-func createManager(cfg *Config, mgrcfg *ManagerConfig, stop chan struct{}) *Manager {
+func createManager(cfg *Config, mgrcfg *ManagerConfig, stop chan struct{}) (*Manager, error) {
dir := osutil.Abs(filepath.Join("managers", mgrcfg.Name))
if err := osutil.MkdirAll(dir); err != nil {
log.Fatal(err)
@@ -95,12 +95,12 @@ func createManager(cfg *Config, mgrcfg *ManagerConfig, stop chan struct{}) *Mana
// Assume compiler and config don't change underneath us.
compilerID, err := build.CompilerIdentity(mgrcfg.Compiler)
if err != nil {
- log.Fatal(err)
+ return nil, err
}
var configData []byte
if mgrcfg.KernelConfig != "" {
if configData, err = ioutil.ReadFile(mgrcfg.KernelConfig); err != nil {
- log.Fatal(err)
+ return nil, err
}
}
syzkallerCommit, _ := readTag(filepath.FromSlash("syzkaller/current/tag"))
@@ -131,7 +131,7 @@ func createManager(cfg *Config, mgrcfg *ManagerConfig, stop chan struct{}) *Mana
stop: stop,
}
os.RemoveAll(mgr.currentDir)
- return mgr
+ return mgr, nil
}
// Gates kernel builds.
diff --git a/syz-ci/syz-ci.go b/syz-ci/syz-ci.go
index 2c10fc992..38d74d42d 100644
--- a/syz-ci/syz-ci.go
+++ b/syz-ci/syz-ci.go
@@ -154,9 +154,17 @@ func main() {
wg.Done()
}()
- managers := make([]*Manager, len(cfg.Managers))
- for i, mgrcfg := range cfg.Managers {
- managers[i] = createManager(cfg, mgrcfg, stop)
+ var managers []*Manager
+ for _, mgrcfg := range cfg.Managers {
+ mgr, err := createManager(cfg, mgrcfg, stop)
+ if err != nil {
+ log.Logf(0, "failed to create manager %v: %v", mgrcfg.Name, err)
+ continue
+ }
+ managers = append(managers, mgr)
+ }
+ if len(managers) == 0 {
+ log.Fatalf("failed to create all managers")
}
for _, mgr := range managers {
mgr := mgr