From b96fc6cf3218a736300f6286edfc62d9fa2028f7 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Fri, 5 Jan 2024 12:22:27 +0100 Subject: 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. --- syz-fuzzer/proc.go | 10 ++++------ 1 file 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, -- cgit mrf-deployment