aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2024-01-05 12:22:27 +0100
committerAleksandr Nogikh <nogikh@google.com>2024-01-09 11:47:02 +0000
commitb96fc6cf3218a736300f6286edfc62d9fa2028f7 (patch)
tree8d9eeb652604e966ea53bf6509976665ca5cdc17
parent4c0fd4bb60ad179a6cf6be0edf416b2fca287b40 (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.go10
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,