diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2024-01-05 12:22:27 +0100 |
|---|---|---|
| committer | Aleksandr Nogikh <nogikh@google.com> | 2024-01-09 11:47:02 +0000 |
| commit | b96fc6cf3218a736300f6286edfc62d9fa2028f7 (patch) | |
| tree | 8d9eeb652604e966ea53bf6509976665ca5cdc17 | |
| parent | 4c0fd4bb60ad179a6cf6be0edf416b2fca287b40 (diff) | |
syz-fuzzer: gate executions more granuarly
Log the program every time we execute it and also obtain a gate ticket
more frequently to prevent fuzzing stalls.
| -rw-r--r-- | syz-fuzzer/proc.go | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/syz-fuzzer/proc.go b/syz-fuzzer/proc.go index 2ca72107a..46d4a5716 100644 --- a/syz-fuzzer/proc.go +++ b/syz-fuzzer/proc.go @@ -317,15 +317,13 @@ func (proc *Proc) randomCollide(origP *prog.Prog) *prog.Prog { func (proc *Proc) executeRaw(opts *ipc.ExecOpts, p *prog.Prog, stat Stat) *ipc.ProgInfo { proc.fuzzer.checkDisabledCalls(p) - - // Limit concurrency window and do leak checking once in a while. - ticket := proc.fuzzer.gate.Enter() - defer proc.fuzzer.gate.Leave(ticket) - - proc.logProgram(opts, p) for try := 0; ; try++ { + // Limit concurrency. + ticket := proc.fuzzer.gate.Enter() + proc.logProgram(opts, p) atomic.AddUint64(&proc.fuzzer.stats[stat], 1) output, info, hanged, err := proc.env.Exec(opts, p) + proc.fuzzer.gate.Leave(ticket) if err != nil { if err == prog.ErrExecBufferTooSmall { // It's bad if we systematically fail to serialize programs, |
