diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2015-12-31 13:11:46 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2015-12-31 16:03:01 +0100 |
| commit | 84916f2fc692c2ac9bbc2aebf621572e4aa3b7c1 (patch) | |
| tree | f937bf2ade4dd6cb772ee06b6faace8f2767eafb | |
| parent | 2e5e7b6f6be8c0f5bb741acb658388d2c1bd71b9 (diff) | |
manager: run leak checking only on one instance (it is slow)
| -rw-r--r-- | syz-manager/manager.go | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/syz-manager/manager.go b/syz-manager/manager.go index 327ff467d..f422c1328 100644 --- a/syz-manager/manager.go +++ b/syz-manager/manager.go @@ -126,13 +126,14 @@ func RunManager(cfg *config.Config, syscalls map[int]bool, suppressions []*regex go s.Accept(ln) for i := 0; i < cfg.Count; i++ { + first := i == 0 go func() { for { vmCfg, err := config.CreateVMConfig(cfg) if err != nil { fatalf("failed to create VM config: %v", err) } - if !mgr.runInstance(vmCfg) { + if !mgr.runInstance(vmCfg, first) { time.Sleep(10 * time.Second) } } @@ -141,7 +142,7 @@ func RunManager(cfg *config.Config, syscalls map[int]bool, suppressions []*regex select {} } -func (mgr *Manager) runInstance(vmCfg *vm.Config) bool { +func (mgr *Manager) runInstance(vmCfg *vm.Config, first bool) bool { inst, err := vm.Create(mgr.cfg.Type, vmCfg) if err != nil { logf(0, "failed to create instance: %v", err) @@ -177,9 +178,11 @@ func (mgr *Manager) runInstance(vmCfg *vm.Config) bool { if mgr.enabledSyscalls != "" { calls = "-calls=" + mgr.enabledSyscalls } + // Leak detection significantly slows down fuzzing, so detect leaks only on the first instance. + leak := first && mgr.cfg.Leak outputC, errorC, err := inst.Run(time.Hour, fmt.Sprintf("/syz-fuzzer -name %v -executor /syz-executor -manager %v:%v -procs %v -leak=%v %v %v %v", - vmCfg.Name, inst.HostAddr(), mgr.port, mgr.cfg.Procs, mgr.cfg.Leak, cover, dropprivs, calls)) + vmCfg.Name, inst.HostAddr(), mgr.port, mgr.cfg.Procs, leak, cover, dropprivs, calls)) if err != nil { logf(0, "failed to run fuzzer: %v", err) return false |
