Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

POC: Speed up compilation by freezing container during compilation. #11940

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

jonathanmetzman
Copy link
Contributor

@jonathanmetzman jonathanmetzman commented May 10, 2024

Instead of rebuilding the entire project every time we want to compile a single fuzz target, a better workflow is to build the project once and somehow compile the target against the already compiled project code.
This POC does that by interrupting building in when it detects it is compiling the fuzz target.
On detection it does the following:

  1. Writes the command to /out/statefile TODO: write the cwd.
  2. Commits the current container as "frozen" for use later. TODO: make this changeable.
  3. Returns 1 so compilation stops. TODO: It would be better to exit the container.
    This step may be important to prevent clean up of the environment.

Then the frozen container can be used to compile fuzz targets against the project without recompiling the project in its entirety.

TODO:

  1. Support this in oss-fuzz-gen
  2. Install docker command line tool in base-builder (or use sneaky inheritance) because it must be used within the container.
  3. Automate the compilation of the new fuzz target

Instead of rebuilding the entire project every time we want to compile
a single fuzz target, a better workflow is to build the project once
and somehow compile the target against the already compiled project
code.
This POC does that by interrupting building in when it detects
it is compiling the fuzz target.
On detection it does the following:
1. Writes the command to /out/statefile
TODO: write the cwd.
2. Commits the current container as "frozen" for use later.
TODO: make this changeable.
3. Returns 1 so compilation stops.
TODO: It would be better to exit the container.
This step may be important to prevent clean up of the environment.

Then the frozen container can be used to compile fuzz targets
against the project without recompiling the project in its
entirety.

TODO:
1. Support this in oss-fuzz-gen
2. Install docker command line tool in base-builder (or use sneaky
inheritance) because it must be used within the container.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant