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

pkg/fuzzer: use layered queues #4762

Merged
merged 13 commits into from
May 16, 2024

Commits on May 16, 2024

  1. pkg/fuzzer: use queue layers

    Instead of relying on a fuzzer-internal priority queue, utilize
    stackable layers of request-generating steps.
    
    Move the functionality to a separate pkg/fuzzer/queue package.
    
    The pkg/fuzzer/queue package can be reused to add extra processing
    layers on top of the fuzzing and to combine machine checking and fuzzing
    execution pipelines.
    a-nogikh committed May 16, 2024
    Configuration menu
    Copy the full SHA
    067a6cd View commit details
    Browse the repository at this point in the history
  2. pkg/fuzzer: introduce a request restarter layer

    Make Result statuses more elaborate.
    Instead of retrying inputs directly in rpc.go, extract this logic to a
    separate entity in pkg/fuzzer/queue.
    a-nogikh committed May 16, 2024
    Configuration menu
    Copy the full SHA
    adaada9 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    f6a00a7 View commit details
    Browse the repository at this point in the history
  4. pkg/vminfo: run programs interactively

    Use the same interfaces as the fuzzer.
    Now syz-manager no longer needs to treat machine check executions
    differently.
    a-nogikh committed May 16, 2024
    Configuration menu
    Copy the full SHA
    f0a5810 View commit details
    Browse the repository at this point in the history
  5. pkg/runtest: use queue.Request and queue.Result

    There's no need to duplicate the execution mechanisms.
    a-nogikh committed May 16, 2024
    Configuration menu
    Copy the full SHA
    f2ace36 View commit details
    Browse the repository at this point in the history
  6. pkg/runtest: print results as they appear

    There's no need to wait until all results have been completed to print
    them.
    a-nogikh committed May 16, 2024
    Configuration menu
    Copy the full SHA
    ce23ca3 View commit details
    Browse the repository at this point in the history
  7. pkg/fuzzer/queue: retry inputs from crashed VMs

    Mark some requests as Important. The Retry() layer will give them one
    more chance even if they were not executed due to a VM crash.
    
    For now, the only important requests are related to triage, candidates
    and pkg/vminfo tests.
    
    Add tests for retry.go.
    a-nogikh committed May 16, 2024
    Configuration menu
    Copy the full SHA
    2ca1a47 View commit details
    Browse the repository at this point in the history
  8. syz-fuzzer: run binaries only once

    If syz-runtest wants several runs, it will pass it as an option for C
    code generation.
    a-nogikh committed May 16, 2024
    Configuration menu
    Copy the full SHA
    4ee5ac0 View commit details
    Browse the repository at this point in the history
  9. pkg/fuzzer: manipulate ipc.ExecOpts

    There's no need in duplicating the signal, coverage, hints flags.
    a-nogikh committed May 16, 2024
    Configuration menu
    Copy the full SHA
    c08fb7d View commit details
    Browse the repository at this point in the history
  10. pkg/fuzzer: simplify prog execution options

    For now, only ProgTypes is enough.
    a-nogikh committed May 16, 2024
    Configuration menu
    Copy the full SHA
    4e64b7b View commit details
    Browse the repository at this point in the history
  11. syz-manager: use only one dynamic source

    Return a new queue.Source from the machine check callback.
    a-nogikh committed May 16, 2024
    Configuration menu
    Copy the full SHA
    93acba2 View commit details
    Browse the repository at this point in the history
  12. syz-manager: check for binary files in queue.Request

    We don't support them in syz-manager.
    a-nogikh committed May 16, 2024
    Configuration menu
    Copy the full SHA
    cfd22f7 View commit details
    Browse the repository at this point in the history
  13. pkg/fuzzer/queue: refactor DynamicSource

    Use a simpler implementation.
    Don't assume the nested Source may be nil.
    a-nogikh committed May 16, 2024
    Configuration menu
    Copy the full SHA
    36b9899 View commit details
    Browse the repository at this point in the history