func execute(pid int, env *ipc.Env, p *prog.Prog, stat *uint64) { allCover := execute1(pid, env, p, stat) coverMu.RLock() defer coverMu.RUnlock() for i, cov := range allCover { if len(cov) == 0 { continue } c := p.Calls[i].Meta diff := cover.Difference(cov, maxCover[c.CallID]) diff = cover.Difference(diff, flakes) if len(diff) != 0 { coverMu.RUnlock() coverMu.Lock() maxCover[c.CallID] = cover.Union(maxCover[c.CallID], diff) coverMu.Unlock() coverMu.RLock() inp := Input{p.Clone(), i, cover.Copy(cov)} triageMu.Lock() triage = append(triage, inp) triageMu.Unlock() } } }
func execute(env *ipc.Env, p *prog.Prog) { allCover := execute1(env, p) for i, cov := range allCover { if len(cov) == 0 { continue } c := p.Calls[i].Meta diff := cover.Difference(cov, maxCover[c.CallID]) diff = cover.Difference(diff, flakes) if len(diff) != 0 { triage = append(triage, Input{p.Clone(), i, cover.Copy(cov)}) } } }
func execute(env *ipc.Env, p *prog.Prog, workerId int) []Input { allCover := execute1(env, p, workerId) var inputs []Input for i, cov := range allCover { if len(cov) == 0 { continue } c := p.Calls[i].Meta diff := cover.Difference(cov, maxCover[c.CallID]) diff = cover.Difference(diff, flakes) if len(diff) != 0 { p1 := p.Clone() p1.TrimAfter(i) inputs = append(inputs, Input{p1, i, cover.Copy(cov)}) } } return inputs }