diff options
Diffstat (limited to 'syz-manager/manager.go')
| -rw-r--r-- | syz-manager/manager.go | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/syz-manager/manager.go b/syz-manager/manager.go index 7a85a6c9a..fdb4929d7 100644 --- a/syz-manager/manager.go +++ b/syz-manager/manager.go @@ -310,6 +310,13 @@ func RunManager(mode *Mode, cfg *mgrconfig.Config) { if err := mgr.serv.Listen(); err != nil { log.Fatalf("failed to start rpc server: %v", err) } + ctx := vm.ShutdownCtx() + go func() { + err := mgr.serv.Serve(ctx) + if err != nil { + log.Fatalf("%s", err) + } + }() log.Logf(0, "serving rpc on tcp://%v", mgr.serv.Port()) if cfg.DashboardAddr != "" { @@ -355,7 +362,6 @@ func RunManager(mode *Mode, cfg *mgrconfig.Config) { mgr.http.ReproLoop = mgr.reproLoop mgr.http.TogglePause = mgr.pool.TogglePause - ctx := vm.ShutdownCtx() if mgr.cfg.HTTP != "" { go func() { err := mgr.http.Serve(ctx) @@ -1088,9 +1094,10 @@ func (mgr *Manager) BugFrames() (leaks, races []string) { return } -func (mgr *Manager) MachineChecked(features flatrpc.Feature, enabledSyscalls map[*prog.Syscall]bool) queue.Source { +func (mgr *Manager) MachineChecked(features flatrpc.Feature, + enabledSyscalls map[*prog.Syscall]bool) (queue.Source, error) { if len(enabledSyscalls) == 0 { - log.Fatalf("all system calls are disabled") + return nil, fmt.Errorf("all system calls are disabled") } if mgr.mode.ExitAfterMachineCheck { mgr.exit(mgr.mode.Name) @@ -1165,15 +1172,15 @@ func (mgr *Manager) MachineChecked(features flatrpc.Feature, enabledSyscalls map mgr.serv = nil return queue.Callback(func() *queue.Request { return nil - }) + }), nil } - return source + return source, nil } else if mgr.mode == ModeCorpusRun { ctx := &corpusRunner{ candidates: candidates, rnd: rand.New(rand.NewSource(time.Now().UnixNano())), } - return queue.DefaultOpts(ctx, opts) + return queue.DefaultOpts(ctx, opts), nil } else if mgr.mode == ModeRunTests { ctx := &runtest.Context{ Dir: filepath.Join(mgr.cfg.Syzkaller, "sys", mgr.cfg.Target.OS, "test"), @@ -1195,7 +1202,7 @@ func (mgr *Manager) MachineChecked(features flatrpc.Feature, enabledSyscalls map } mgr.exit("tests") }() - return ctx + return ctx, nil } else if mgr.mode == ModeIfaceProbe { exec := queue.Plain() go func() { @@ -1209,7 +1216,7 @@ func (mgr *Manager) MachineChecked(features flatrpc.Feature, enabledSyscalls map } mgr.exit("interface probe") }() - return exec + return exec, nil } panic(fmt.Sprintf("unexpected mode %q", mgr.mode.Name)) } @@ -1430,11 +1437,11 @@ func (mgr *Manager) dashboardReproTasks() { } } -func (mgr *Manager) CoverageFilter(modules []*vminfo.KernelModule) []uint64 { +func (mgr *Manager) CoverageFilter(modules []*vminfo.KernelModule) ([]uint64, error) { mgr.reportGenerator.Init(modules) filters, err := manager.PrepareCoverageFilters(mgr.reportGenerator, mgr.cfg, true) if err != nil { - log.Fatalf("failed to init coverage filter: %v", err) + return nil, fmt.Errorf("failed to init coverage filter: %w", err) } mgr.coverFilters = filters mgr.http.Cover.Store(&manager.CoverageInfo{ @@ -1446,7 +1453,7 @@ func (mgr *Manager) CoverageFilter(modules []*vminfo.KernelModule) []uint64 { for pc := range filters.ExecutorFilter { pcs = append(pcs, pc) } - return pcs + return pcs, nil } func publicWebAddr(addr string) string { |
