Fix: disable custom hooks during coverage report generation#1044
Fix: disable custom hooks during coverage report generation#1044
Conversation
There was a problem hiding this comment.
Pull request overview
This PR fixes issue #878 where custom hooks are not properly disabled during coverage report generation, causing NoClassDefFoundError when hooked classes are used during coverage dumping and the hook class is no longer loadable.
Changes:
- Enable conditional hooks automatically when custom user hooks are used with coverage reporting
- Disable hooks before generating coverage reports in the shutdown sequence
- Add regression test to verify hooks are disabled during coverage report generation
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| src/main/java/com/code_intelligence/jazzer/agent/Agent.kt | Automatically enables conditional hooks when user hooks are used with coverage reporting to allow runtime hook disabling |
| src/main/java/com/code_intelligence/jazzer/driver/FuzzTargetRunner.java | Disables hooks before coverage dump/report generation in shutdown sequence |
| src/main/java/com/code_intelligence/jazzer/driver/Opt.java | Updates comment to document that conditional hooks are used during coverage report generation |
| tests/src/test/java/com/example/CoverageWithHooksFuzzer.java | Regression test verifying hooks are disabled during coverage generation |
| tests/src/test/java/com/example/CoverageWithHooksFuzzerHooks.java | Custom hook for regression test that sets system property when called |
| tests/BUILD.bazel | Test configuration for the regression test with custom hook JAR |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
4408889 to
ca199bd
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 6 out of 6 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
cb83b65 to
b5ba4c1
Compare
|
It's interesting that you can alternatively also "fix" this issue by disabling our Edit: The issue exists only in Jazzer standalone, and not in the JUnit integration code path. |
There was a problem hiding this comment.
LGTM !
Ideally, Jazzer should internally not use any classes that we instrument. For example, Jazzer internally uses java.util.regex.Pattern that is instrumented by RegexRoadblocks.
It would be nice if we could keep original functions, and force all internall Jazzer dependencies to use the original functions.
But your fix is good enough!
b5ba4c1 to
b168cc1
Compare
Fixes #878