Skip to content

Commit 5b936a6

Browse files
Danylo MocherniukV8-internal LUCI CQ
authored andcommitted
[dumpling] Add differential statistics to logs.
Had some logs about them, but removed them for review. Now it is time to add proper reporting. Bug:441467877 Change-Id: I03bf6a6ae447caa4bc3eae202709fb2976a017c0 Reviewed-on: https://chrome-internal-review.googlesource.com/c/v8/fuzzilli/+/8969557 Reviewed-by: Matthias Liedtke <mliedtke@google.com> Commit-Queue: Danylo Mocherniuk <mdanylo@google.com>
1 parent 4b76603 commit 5b936a6

File tree

3 files changed

+22
-2
lines changed

3 files changed

+22
-2
lines changed

Sources/Fuzzilli/Protobuf/sync.pb.swift

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,12 @@ public struct Fuzzilli_Protobuf_Statistics: @unchecked Sendable {
177177
set {_uniqueStorage()._timeoutRate = newValue}
178178
}
179179

180+
//// The number of programs resulting in valid differential produced.
181+
public var differentialSamples: UInt64 {
182+
get {return _storage._differentialSamples}
183+
set {_uniqueStorage()._differentialSamples = newValue}
184+
}
185+
180186
public var unknownFields = SwiftProtobuf.UnknownStorage()
181187

182188
public init() {}
@@ -275,7 +281,7 @@ extension Fuzzilli_Protobuf_FuzzerState: SwiftProtobuf.Message, SwiftProtobuf._M
275281

276282
extension Fuzzilli_Protobuf_Statistics: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
277283
public static let protoMessageName: String = _protobuf_package + ".Statistics"
278-
public static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}totalSamples\0\u{1}validSamples\0\u{1}interestingSamples\0\u{1}timedOutSamples\0\u{1}crashingSamples\0\u{1}totalExecs\0\u{1}avgCorpusSize\0\u{1}avgProgramSize\0\u{1}avgCorpusProgramSize\0\u{1}avgExecutionTime\0\u{1}execsPerSecond\0\u{1}fuzzerOverhead\0\u{1}minimizationOverhead\0\u{1}numChildNodes\0\u{1}coverage\0\u{1}correctnessRate\0\u{1}timeoutRate\0")
284+
public static let _protobuf_nameMap = SwiftProtobuf._NameMap(bytecode: "\0\u{1}totalSamples\0\u{1}validSamples\0\u{1}interestingSamples\0\u{1}timedOutSamples\0\u{1}crashingSamples\0\u{1}totalExecs\0\u{1}avgCorpusSize\0\u{1}avgProgramSize\0\u{1}avgCorpusProgramSize\0\u{1}avgExecutionTime\0\u{1}execsPerSecond\0\u{1}fuzzerOverhead\0\u{1}minimizationOverhead\0\u{1}numChildNodes\0\u{1}coverage\0\u{1}correctnessRate\0\u{1}timeoutRate\0\u{1}differentialSamples\0")
279285

280286
fileprivate class _StorageClass {
281287
var _totalSamples: UInt64 = 0
@@ -295,6 +301,7 @@ extension Fuzzilli_Protobuf_Statistics: SwiftProtobuf.Message, SwiftProtobuf._Me
295301
var _coverage: Double = 0
296302
var _correctnessRate: Double = 0
297303
var _timeoutRate: Double = 0
304+
var _differentialSamples: UInt64 = 0
298305

299306
// This property is used as the initial default value for new instances of the type.
300307
// The type itself is protecting the reference to its storage via CoW semantics.
@@ -322,6 +329,7 @@ extension Fuzzilli_Protobuf_Statistics: SwiftProtobuf.Message, SwiftProtobuf._Me
322329
_coverage = source._coverage
323330
_correctnessRate = source._correctnessRate
324331
_timeoutRate = source._timeoutRate
332+
_differentialSamples = source._differentialSamples
325333
}
326334
}
327335

@@ -357,6 +365,7 @@ extension Fuzzilli_Protobuf_Statistics: SwiftProtobuf.Message, SwiftProtobuf._Me
357365
case 15: try { try decoder.decodeSingularDoubleField(value: &_storage._coverage) }()
358366
case 16: try { try decoder.decodeSingularDoubleField(value: &_storage._correctnessRate) }()
359367
case 17: try { try decoder.decodeSingularDoubleField(value: &_storage._timeoutRate) }()
368+
case 18: try { try decoder.decodeSingularUInt64Field(value: &_storage._differentialSamples) }()
360369
default: break
361370
}
362371
}
@@ -416,6 +425,9 @@ extension Fuzzilli_Protobuf_Statistics: SwiftProtobuf.Message, SwiftProtobuf._Me
416425
if _storage._timeoutRate.bitPattern != 0 {
417426
try visitor.visitSingularDoubleField(value: _storage._timeoutRate, fieldNumber: 17)
418427
}
428+
if _storage._differentialSamples != 0 {
429+
try visitor.visitSingularUInt64Field(value: _storage._differentialSamples, fieldNumber: 18)
430+
}
419431
}
420432
try unknownFields.traverse(visitor: &visitor)
421433
}
@@ -442,6 +454,7 @@ extension Fuzzilli_Protobuf_Statistics: SwiftProtobuf.Message, SwiftProtobuf._Me
442454
if _storage._coverage != rhs_storage._coverage {return false}
443455
if _storage._correctnessRate != rhs_storage._correctnessRate {return false}
444456
if _storage._timeoutRate != rhs_storage._timeoutRate {return false}
457+
if _storage._differentialSamples != rhs_storage._differentialSamples {return false}
445458
return true
446459
}
447460
if !storagesAreEqual {return false}

Sources/Fuzzilli/Protobuf/sync.proto

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,7 @@ message Statistics {
8282

8383
/// The timeout rate of recently generated programs (number of timeouts divided by number of generated programs).
8484
double timeoutRate = 17;
85+
86+
/// The number of programs resulting in valid differential produced.
87+
uint64 differentialSamples = 18;
8588
}

Sources/FuzzilliCli/TerminalUI.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,10 @@ class TerminalUI {
125125
} else {
126126
print("Fuzzer Statistics")
127127
}
128+
let differentialsLine = fuzzer.isDifferentialFuzzing
129+
? "\nDifferentials Found: \(stats.differentialSamples)"
130+
: ""
131+
128132
print("""
129133
-----------------
130134
Fuzzer state: \(state)
@@ -136,7 +140,7 @@ class TerminalUI {
136140
Corpus Size: \(fuzzer.corpus.size)\(maybeAvgCorpusSize)
137141
Correctness Rate: \(String(format: "%.2f%%", stats.correctnessRate * 100)) (overall: \(String(format: "%.2f%%", stats.overallCorrectnessRate * 100)))
138142
Timeout Rate: \(String(format: "%.2f%%", stats.timeoutRate * 100)) (overall: \(String(format: "%.2f%%", stats.overallTimeoutRate * 100)))
139-
Crashes Found: \(stats.crashingSamples)
143+
Crashes Found: \(stats.crashingSamples)\(differentialsLine)
140144
Timeouts Hit: \(stats.timedOutSamples)
141145
Coverage: \(String(format: "%.2f%%", stats.coverage * 100))
142146
Avg. program size: \(String(format: "%.2f", stats.avgProgramSize))

0 commit comments

Comments
 (0)