mirror of
https://github.com/reactos/syzkaller.git
synced 2025-02-03 10:31:47 +00:00
syz-manager: add detailed coverage logging
Originally, syz-manager confusingly logs corpusSignal as "cover". Change syz-manager's logging to output corpusSignal, corpusCover and maxSignal. Add a field in Stats to store maxSignal.
This commit is contained in:
parent
954bd312f9
commit
f7fbb18cba
@ -58,3 +58,4 @@ Christoph Paasch
|
|||||||
Collabora
|
Collabora
|
||||||
André Almeida
|
André Almeida
|
||||||
Dipanjan Das
|
Dipanjan Das
|
||||||
|
Daimeng Wang
|
||||||
|
@ -215,13 +215,15 @@ func RunManager(cfg *mgrconfig.Config, target *prog.Target, sysTarget *targets.T
|
|||||||
mgr.fuzzingTime += diff * time.Duration(atomic.LoadUint32(&mgr.numFuzzing))
|
mgr.fuzzingTime += diff * time.Duration(atomic.LoadUint32(&mgr.numFuzzing))
|
||||||
executed := mgr.stats.execTotal.get()
|
executed := mgr.stats.execTotal.get()
|
||||||
crashes := mgr.stats.crashes.get()
|
crashes := mgr.stats.crashes.get()
|
||||||
signal := mgr.stats.corpusSignal.get()
|
corpusCover := mgr.stats.corpusCover.get()
|
||||||
|
corpusSignal := mgr.stats.corpusSignal.get()
|
||||||
|
maxSignal := mgr.stats.maxSignal.get()
|
||||||
mgr.mu.Unlock()
|
mgr.mu.Unlock()
|
||||||
numReproducing := atomic.LoadUint32(&mgr.numReproducing)
|
numReproducing := atomic.LoadUint32(&mgr.numReproducing)
|
||||||
numFuzzing := atomic.LoadUint32(&mgr.numFuzzing)
|
numFuzzing := atomic.LoadUint32(&mgr.numFuzzing)
|
||||||
|
|
||||||
log.Logf(0, "VMs %v, executed %v, cover %v, crashes %v, repro %v",
|
log.Logf(0, "VMs %v, executed %v, corpus cover %v, corpus signal %v, max signal %v, crashes %v, repro %v",
|
||||||
numFuzzing, executed, signal, crashes, numReproducing)
|
numFuzzing, executed, corpusCover, corpusSignal, maxSignal, crashes, numReproducing)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
@ -270,6 +270,7 @@ func (serv *RPCServer) Poll(a *rpctype.PollArgs, r *rpctype.PollRes) error {
|
|||||||
newMaxSignal := serv.maxSignal.Diff(a.MaxSignal.Deserialize())
|
newMaxSignal := serv.maxSignal.Diff(a.MaxSignal.Deserialize())
|
||||||
if !newMaxSignal.Empty() {
|
if !newMaxSignal.Empty() {
|
||||||
serv.maxSignal.Merge(newMaxSignal)
|
serv.maxSignal.Merge(newMaxSignal)
|
||||||
|
serv.stats.maxSignal.set(len(serv.maxSignal))
|
||||||
for _, f1 := range serv.fuzzers {
|
for _, f1 := range serv.fuzzers {
|
||||||
if f1 == f {
|
if f1 == f {
|
||||||
continue
|
continue
|
||||||
|
@ -27,6 +27,7 @@ type Stats struct {
|
|||||||
hubRecvReproDrop Stat
|
hubRecvReproDrop Stat
|
||||||
corpusCover Stat
|
corpusCover Stat
|
||||||
corpusSignal Stat
|
corpusSignal Stat
|
||||||
|
maxSignal Stat
|
||||||
|
|
||||||
mu sync.Mutex
|
mu sync.Mutex
|
||||||
namedStats map[string]uint64
|
namedStats map[string]uint64
|
||||||
@ -44,6 +45,7 @@ func (stats *Stats) all() map[string]uint64 {
|
|||||||
"exec total": stats.execTotal.get(),
|
"exec total": stats.execTotal.get(),
|
||||||
"cover": stats.corpusCover.get(),
|
"cover": stats.corpusCover.get(),
|
||||||
"signal": stats.corpusSignal.get(),
|
"signal": stats.corpusSignal.get(),
|
||||||
|
"max signal": stats.maxSignal.get(),
|
||||||
}
|
}
|
||||||
if stats.haveHub {
|
if stats.haveHub {
|
||||||
m["hub: send prog add"] = stats.hubSendProgAdd.get()
|
m["hub: send prog add"] = stats.hubSendProgAdd.get()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user