mirror of
https://github.com/reactos/syzkaller.git
synced 2025-02-04 18:56:16 +00:00
syz-fuzzer: fix manager polling
We need to always poll manager to send stats/maxsignal, we just need not request candidates if we have plenty of work.
This commit is contained in:
parent
9b5612df77
commit
6755f62592
@ -51,9 +51,10 @@ type NewInputArgs struct {
|
||||
}
|
||||
|
||||
type PollArgs struct {
|
||||
Name string
|
||||
MaxSignal []uint32
|
||||
Stats map[string]uint64
|
||||
Name string
|
||||
NeedCandidates bool
|
||||
MaxSignal []uint32
|
||||
Stats map[string]uint64
|
||||
}
|
||||
|
||||
type PollRes struct {
|
||||
|
@ -346,15 +346,16 @@ func main() {
|
||||
}
|
||||
if poll || time.Since(lastPoll) > 10*time.Second {
|
||||
triageMu.RLock()
|
||||
if len(candidates) > *flagProcs {
|
||||
triageMu.RUnlock()
|
||||
needCandidates := len(candidates) < *flagProcs
|
||||
triageMu.RUnlock()
|
||||
if !needCandidates && poll {
|
||||
continue
|
||||
}
|
||||
triageMu.RUnlock()
|
||||
|
||||
a := &PollArgs{
|
||||
Name: *flagName,
|
||||
Stats: make(map[string]uint64),
|
||||
Name: *flagName,
|
||||
NeedCandidates: needCandidates,
|
||||
Stats: make(map[string]uint64),
|
||||
}
|
||||
signalMu.Lock()
|
||||
a.MaxSignal = make([]uint32, 0, len(newSignal))
|
||||
@ -390,6 +391,8 @@ func main() {
|
||||
if err := manager.Call("Manager.Poll", a, r); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
Logf(1, "poll: candidates=%v inputs=%v signal=%v",
|
||||
len(r.Candidates), len(r.NewInputs), len(r.MaxSignal))
|
||||
if len(r.MaxSignal) != 0 {
|
||||
signalMu.Lock()
|
||||
for _, s := range r.MaxSignal {
|
||||
|
@ -996,10 +996,12 @@ func (mgr *Manager) Poll(a *PollArgs, r *PollRes) error {
|
||||
f.inputs = nil
|
||||
}
|
||||
|
||||
for i := 0; i < mgr.cfg.Procs && len(mgr.candidates) > 0; i++ {
|
||||
last := len(mgr.candidates) - 1
|
||||
r.Candidates = append(r.Candidates, mgr.candidates[last])
|
||||
mgr.candidates = mgr.candidates[:last]
|
||||
if a.NeedCandidates {
|
||||
for i := 0; i < mgr.cfg.Procs && len(mgr.candidates) > 0; i++ {
|
||||
last := len(mgr.candidates) - 1
|
||||
r.Candidates = append(r.Candidates, mgr.candidates[last])
|
||||
mgr.candidates = mgr.candidates[:last]
|
||||
}
|
||||
}
|
||||
if len(mgr.candidates) == 0 {
|
||||
mgr.candidates = nil
|
||||
|
Loading…
x
Reference in New Issue
Block a user