aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/fuzzer/queue
Commit message (Collapse)AuthorAgeFilesLines
* pkg/fuzzer/queue: regenerateTaras Madan2025-10-151-2/+3
|
* pkg/fuzzer/queue: copy more field in TeeAleksandr Nogikh2025-08-262-1/+36
| | | | | | | Copy everything that might be important during execution on other kernels/VM pools. Add a test to verify it. The functionality is actively used to clone requests in the diff fuzzer.
* pkg/fuzzer/queue: add Status.StringDmitry Vyukov2025-04-022-0/+28
| | | | Otherwise it's hard to understand in error messages what 1/2/3 mean.
* all: fix recvcheck errorsTaras Madan2025-02-071-9/+0
|
* pkg/vminfo: gracefully handle context abortionAleksandr Nogikh2025-02-031-2/+2
| | | | | On context abortion, return a special error. On the pkg/rpcserver side, recognize and process it.
* all: clarify the error in case of ExecFailureAleksandr Nogikh2025-01-301-2/+10
| | | | | Whenever the status is set, also include the reason. It should help easier debug execution and machine check time problems.
* pkg/fuzzer/queue: remove unnecessary Context usageAleksandr Nogikh2025-01-241-3/+1
|
* executor: query globs in the test program contextDmitry Vyukov2024-12-112-11/+63
| | | | | | | | | | | | | | | | | We query globs for 2 reasons: 1. Expand glob types in syscall descriptions. 2. Dynamic file probing for automatic descriptions generation. In both of these contexts are are interested in files that will be present during test program execution (rather than normal unsandboxed execution). For example, some files may not be accessible to test programs after pivot root. On the other hand, we create and link some additional files for the test program that don't normally exist. Add a new request type for querying of globs that are executed in the test program context.
* tools: add a syz-diff toolAleksandr Nogikh2024-10-251-0/+68
| | | | | | | | | | | | | | This is the prototype version of the patch series fuzzing functionality based on the syzkaller fuzzing engine. The tool takes two syzkaller configs -- one for the base kernel, one for the patched kernel. Optionally the patch itself can be also provided. syz-diff will consider a bug patched-only if: 1) It happened while fuzzing the patched kernel. 2) It was never observed on the base kernel. 3) The tool found a repro on the patched kernel. 4) The repro did not crash the base kernel.
* pkg/rpcserver: take stats as a dependencyAleksandr Nogikh2024-10-251-4/+0
| | | | | It will enable collecting statistics for several simultaneous RPCServer objects.
* executor: better handling for hanged test processesDmitry Vyukov2024-10-242-10/+28
| | | | | | | | | | | | | | | Currently we kill hanged processes and consider the corresponding test finished. We don't kill/wait for the actual test subprocess (we don't know its pid to kill, and waiting will presumably hang). This has 2 problems: 1. If the hanged process causes "task hung" report, we can't reproduce it, since the test finished too long ago (manager thinks its finished and discards the request). 2. The test process still consumed per-pid resources. Explicitly detect and handle such cases: Manager keeps these hanged tests forever, and we assign a new proc id for future processes (don't reuse the hanged one).
* pkg/fuzzer: try to triage on different VMsDmitry Vyukov2024-08-023-5/+196
| | | | Distribute triage requests to different VMs.
* pkg/fuzzer/queue: move common fuzzing statsDmitry Vyukov2024-07-251-0/+20
| | | | | These stats will be needed for snapshot mode that does not use rpcserver. Move them from pkg/rpcserver to pkg/fuzzer/queue.
* pkg/stat: rename package name to singular formDmitry Vyukov2024-07-241-2/+2
| | | | | | | | Go package names should generally be singular form: https://go.dev/blog/package-names https://rakyll.org/style-packages https://groups.google.com/g/golang-nuts/c/buBwLar1gNw
* executor: add runner modeDmitry Vyukov2024-06-241-1/+26
| | | | | | | Move all syz-fuzzer logic into syz-executor and remove syz-fuzzer. Also restore syz-runtest functionality in the manager. Update #4917 (sets most signal handlers to SIG_IGN)
* pkg/fuzzer: improve handling of signal for non-target callsDmitry Vyukov2024-06-031-4/+3
| | | | | | | During deflake/minimization we have 1 target call that should be handled specially: during triage we want all signal, during minimization we want new+target signal. For the rest of the calls we can do normal handling: collect new signal and start triage if we see any new signal.
* syz-manager: add corpus triage modeDmitry Vyukov2024-06-032-22/+1
| | | | | | | | Add corpus triage mode and support it in testbed. This is useful to benchmark just the triage phase w/o any subsequent fuzzing. First, fuzzing is more random. Second, if triage duration is different in different versions, then they will do different amount of fuzzing in fixed testbed time.
* pkg/ipc: remove ExecOptsDmitry Vyukov2024-05-211-2/+1
| | | | Switch to flatrpc.ExecOpts.
* pkg/ipc: remove ProgInfoDmitry Vyukov2024-05-211-4/+2
| | | | | | Switch to flatrpc.ProgInfo. Note: this disables syz-runtest and syz-verifier.
* pkg/ipc: use flatrpc flagsDmitry Vyukov2024-05-171-3/+4
| | | | | | Flatrpc flags are passed in RPC execution requests, so to avoid conversions and duplicate set of flags use flatrpc flags in pkg/ipc directly.
* pkg/fuzzer/queue: simplify the priority queueAleksandr Nogikh2024-05-164-100/+54
| | | | | | We don't need the full priority queue functionality anymore. For our purposes it's enough to only enforce the order between the elements of different sub-queues.
* pkg/fuzzer/queue: refactor DynamicSourceAleksandr Nogikh2024-05-161-12/+11
| | | | | Use a simpler implementation. Don't assume the nested Source may be nil.
* pkg/fuzzer: manipulate ipc.ExecOptsAleksandr Nogikh2024-05-161-26/+26
| | | | There's no need in duplicating the signal, coverage, hints flags.
* pkg/fuzzer/queue: retry inputs from crashed VMsAleksandr Nogikh2024-05-163-0/+88
| | | | | | | | | | 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.
* pkg/runtest: use queue.Request and queue.ResultAleksandr Nogikh2024-05-161-1/+5
| | | | There's no need to duplicate the execution mechanisms.
* pkg/vminfo: run programs interactivelyAleksandr Nogikh2024-05-161-0/+121
| | | | | | Use the same interfaces as the fuzzer. Now syz-manager no longer needs to treat machine check executions differently.
* pkg/fuzzer: introduce a request restarter layerAleksandr Nogikh2024-05-162-12/+74
| | | | | | Make Result statuses more elaborate. Instead of retrying inputs directly in rpc.go, extract this logic to a separate entity in pkg/fuzzer/queue.
* pkg/fuzzer: use queue layersAleksandr Nogikh2024-05-164-0/+457
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.