func main() { flag.Parse() corpus := readCorpus() flags := ipc.FlagThreaded if *flagDebug { flags |= ipc.FlagDebug } env, err := ipc.MakeEnv(*flagExecutor, 4*time.Second, flags) if err != nil { failf("failed to create execution environment: %v", err) } rs := rand.NewSource(time.Now().UnixNano()) rnd := rand.New(rs) for i := 0; ; i++ { var p *prog.Prog if len(corpus) == 0 || i%10 != 0 { p = prog.Generate(rs, 50, nil) execute(env, p) p.Mutate(rs, 50, nil) execute(env, p) } else { p = corpus[rnd.Intn(len(corpus))].Clone() p.Mutate(rs, 50, nil) execute(env, p) } } }
func main() { flag.Parse() corpus := readCorpus() var flags uint64 if *flagThreaded { flags |= ipc.FlagThreaded } if *flagCollide { flags |= ipc.FlagCollide } if *flagNobody { flags |= ipc.FlagDropPrivs } if *flagDebug { flags |= ipc.FlagDebug } for p := 0; p < *flagProcs; p++ { go func() { env, err := ipc.MakeEnv(*flagExecutor, 10*time.Second, flags) if err != nil { failf("failed to create execution environment: %v", err) } rs := rand.NewSource(time.Now().UnixNano()) rnd := rand.New(rs) for i := 0; ; i++ { var p *prog.Prog if len(corpus) == 0 || i%10 != 0 { p = prog.Generate(rs, 50, nil) execute(env, p) p.Mutate(rs, 50, nil) execute(env, p) } else { p = corpus[rnd.Intn(len(corpus))].Clone() p.Mutate(rs, 50, nil) execute(env, p) } } }() } select {} }
func main() { flag.Parse() corpus := readCorpus() log.Printf("parsed %v programs", len(corpus)) calls := buildCallList() prios := prog.CalculatePriorities(corpus) ct := prog.BuildChoiceTable(prios, calls) var flags uint64 if *flagThreaded { flags |= ipc.FlagThreaded } if *flagCollide { flags |= ipc.FlagCollide } if *flagNobody { flags |= ipc.FlagDropPrivs } if *flagDebug { flags |= ipc.FlagDebug } if *flagNoPgid { flags |= ipc.FlagNoSetpgid } gate = ipc.NewGate(2 * *flagProcs) for pid := 0; pid < *flagProcs; pid++ { pid := pid go func() { env, err := ipc.MakeEnv(*flagExecutor, *flagTimeout, flags) if err != nil { failf("failed to create execution environment: %v", err) } rs := rand.NewSource(time.Now().UnixNano() + int64(pid)*1e12) rnd := rand.New(rs) for i := 0; ; i++ { var p *prog.Prog if len(corpus) == 0 || i%4 != 0 { p = prog.Generate(rs, programLength, ct) execute(pid, env, p) p.Mutate(rs, programLength, ct) execute(pid, env, p) } else { p = corpus[rnd.Intn(len(corpus))].Clone() p.Mutate(rs, programLength, ct) execute(pid, env, p) p.Mutate(rs, programLength, ct) execute(pid, env, p) } } }() } for range time.NewTicker(5 * time.Second).C { log.Printf("executed %v programs", atomic.LoadUint64(&statExec)) } }
func main() { flag.Parse() corpus := readCorpus() Logf(0, "parsed %v programs", len(corpus)) calls := buildCallList() prios := prog.CalculatePriorities(corpus) ct := prog.BuildChoiceTable(prios, calls) flags, timeout, err := ipc.DefaultFlags() if err != nil { Fatalf("%v", err) } gate = ipc.NewGate(2**flagProcs, nil) for pid := 0; pid < *flagProcs; pid++ { pid := pid go func() { env, err := ipc.MakeEnv(*flagExecutor, timeout, flags, pid) if err != nil { Fatalf("failed to create execution environment: %v", err) } rs := rand.NewSource(time.Now().UnixNano() + int64(pid)*1e12) rnd := rand.New(rs) for i := 0; ; i++ { var p *prog.Prog if len(corpus) == 0 || i%4 != 0 { p = prog.Generate(rs, programLength, ct) execute(pid, env, p) p.Mutate(rs, programLength, ct, corpus) execute(pid, env, p) } else { p = corpus[rnd.Intn(len(corpus))].Clone() p.Mutate(rs, programLength, ct, corpus) execute(pid, env, p) p.Mutate(rs, programLength, ct, corpus) execute(pid, env, p) } } }() } for range time.NewTicker(5 * time.Second).C { Logf(0, "executed %v programs", atomic.LoadUint64(&statExec)) } }