aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Meumertzheim <meumertzheim@code-intelligence.com>2021-12-10 22:24:36 +0100
committerGitHub <noreply@github.com>2021-12-10 22:24:36 +0100
commit3daebce38644ea1ec432bbc7e37825e58d0fea43 (patch)
tree8c322038cd6d63f5fd7db6f9289a137b2585051d
parent1571e29446b4a574a34c043262a1c53ff0019ef7 (diff)
downloadjazzer-api-3daebce38644ea1ec432bbc7e37825e58d0fea43.tar.gz
Disable GEP instrumentation by default (#248)
-rw-r--r--README.md2
-rw-r--r--agent/src/main/java/com/code_intelligence/jazzer/agent/Agent.kt6
2 files changed, 6 insertions, 2 deletions
diff --git a/README.md b/README.md
index eb7bf67e..07bbdda1 100644
--- a/README.md
+++ b/README.md
@@ -432,7 +432,7 @@ The particular instrumentation types to apply can be specified using the `--trac
* `div`: divisors in integer divisions
* `gep`: constant array indexes
* `indir`: call through `Method#invoke`
-* `all`: shorthand to apply all available instrumentations
+* `all`: shorthand to apply all available instrumentations (except `gep`)
Multiple instrumentation types can be combined with a colon.
diff --git a/agent/src/main/java/com/code_intelligence/jazzer/agent/Agent.kt b/agent/src/main/java/com/code_intelligence/jazzer/agent/Agent.kt
index cd8d7255..33d02263 100644
--- a/agent/src/main/java/com/code_intelligence/jazzer/agent/Agent.kt
+++ b/agent/src/main/java/com/code_intelligence/jazzer/agent/Agent.kt
@@ -95,7 +95,11 @@ fun premain(agentArgs: String?, instrumentation: Instrumentation) {
"gep" -> setOf(InstrumentationType.GEP)
"indir" -> setOf(InstrumentationType.INDIR)
"native" -> setOf(InstrumentationType.NATIVE)
- "all" -> InstrumentationType.values().toSet()
+ // Disable GEP instrumentation by default as it appears to negatively affect fuzzing
+ // performance. Our current GEP instrumentation only reports constant indices, but even
+ // when we instead reported non-constant indices, they tended to completely fill up the
+ // table of recent compares and value profile map.
+ "all" -> InstrumentationType.values().toSet() - InstrumentationType.GEP
else -> {
println("WARN: Skipping unknown instrumentation type $it")
emptySet()