From efbdefc51d8d8ef8024a05119e176b38f3815051 Mon Sep 17 00:00:00 2001 From: Grigory Bazilevich Date: Sun, 15 Feb 2026 21:04:35 +0300 Subject: pkg/corpus: update Programs List priority storage Static prefix sums have been replaced with a Fenwick tree. In the current syzkaller, program priority was set based on a Signal received by a single system call. This commit allows priority to be changed dynamically, making it possible to maintain priority based on Signals from all system calls. Signed-off-by: Grigory Bazilevich --- pkg/corpus/corpus.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'pkg/corpus/corpus.go') diff --git a/pkg/corpus/corpus.go b/pkg/corpus/corpus.go index 594521fcc..54c8d96cd 100644 --- a/pkg/corpus/corpus.go +++ b/pkg/corpus/corpus.go @@ -131,6 +131,7 @@ func (corpus *Corpus) Save(inp NewInput) { corpus.mu.Lock() defer corpus.mu.Unlock() + var newItem *Item = nil update := ItemUpdate{ Call: inp.Call, RawCover: inp.RawCover, @@ -143,7 +144,7 @@ func (corpus *Corpus) Save(inp NewInput) { var newCover cover.Cover newCover.Merge(old.Cover) newCover.Merge(inp.Cover) - newItem := &Item{ + newItem = &Item{ Sig: sig, Prog: old.Prog, Call: old.Call, @@ -157,10 +158,8 @@ func (corpus *Corpus) Save(inp NewInput) { if len(newItem.Updates) < maxUpdates { newItem.Updates = append(newItem.Updates, update) } - corpus.progsMap[sig] = newItem - corpus.applyFocusAreas(newItem, inp.Cover) } else { - item := &Item{ + newItem = &Item{ Sig: sig, Call: inp.Call, Prog: inp.Prog, @@ -169,10 +168,11 @@ func (corpus *Corpus) Save(inp NewInput) { Cover: inp.Cover, Updates: []ItemUpdate{update}, } - corpus.progsMap[sig] = item - corpus.applyFocusAreas(item, inp.Cover) - corpus.saveProgram(inp.Prog, inp.Signal) } + corpus.progsMap[sig] = newItem + corpus.applyFocusAreas(newItem, newItem.Cover) + corpus.saveProgram(inp.Prog, newItem.Signal) + corpus.signal.Merge(inp.Signal) newCover := corpus.cover.MergeDiff(inp.Cover) if corpus.updates != nil { -- cgit mrf-deployment