These commits are when the Protocol Buffers files have changed: (only the last 100 relevant commits are shown)
| Commit: | f69c2e6 | |
|---|---|---|
| Author: | Ivan Barba | |
| Committer: | GitHub | |
[Swarming] Adds Response proto & discards tasks with missing dimensions (#5289) ## Overview It was request for me to add a log to easily debug when swarming scheduled a task, but i noticed we didnt had the protos for parsing the response, hence i added them. Also this PR handles an edge case in which swarming will not return a task_id if the tasks wasn't scheduled due to swarming related issues(not request, nor pc contract). #### Background This PR comes from a discussion & agreement to a required change from this [PR](https://github.com/google/clusterfuzz/pull/5277) ## Changes - Adds the missing swarming_task_response proto - Ran `protos/generate.sh` which updated a ton of files - The swarming service now marks tasks as not scheduled when no task_id is found, task_id cannot be found if swarming didn't queue the task, because of wrong dimensions or other swarming internal reasons - As the `count_tasks()` api method, now the `push_task()` will also only raise `SwarmingAPIErrors` --------- Co-authored-by: Titouan Rigoudy <titouan@chromium.org>
The documentation is generated from this commit.
| Commit: | 177c531 | |
|---|---|---|
| Author: | Paulo Vitor Lima Borges | |
| Committer: | GitHub | |
Rename EngineOutput to FuzzerRunOutput in uworker_msg and fuzz_task (#5310) This PR is related to #5311, which contains the core implementation and full context. Bug: b/487905050 ## Changes Renames the `EngineOutput` protobuf message to `FuzzerRunOutput` and the `engine_outputs` field to `fuzzer_run_outputs`. This generalizes the uworker interface to support deferred logging for both engine-based and blackbox fuzzers. Updates the internal helper functions and variables in `fuzz_task.py` to compile against the new types. This is a syntactic change that only updates the protobuf structure and its references. It does not change any execution or upload logic.
| Commit: | 4bdcc1c | |
|---|---|---|
| Author: | Paulo Borges | |
| Committer: | Paulo Borges | |
[blackbox fuzzer logs] defer the blackbox fuzzer logs to postprocess
| Commit: | efeb58f | |
|---|---|---|
| Author: | Ivan Barba | |
| Committer: | GitHub | |
Swarming: Add TasksCountRequest and TasksCount to swarming.proto (#5276) As part of the initiative of creating a backpressure logic for the swarming integration we are adding first the required protobuf definitions for a upcoming(in another pr) `/prpc/swarmig.v2.tasks/CountTasks` prpc endpoint. ### Background For more context on the backpressure initative see more info in internal fuzz docs ## Changes - Adds the following protobuf definitions to the `swarming.proto` file: - CountTask message - TasksCountRequest message - StateQuery enum - Updated the reference to the chromium repo in the swarming.proto file - Ran the `src/clusterfuzz/_internal/protos/generate.sh` script, which added a bunch of changes to the generated files. ## Tests No unit tests nor actual tests in the CF code are required for this one, as we are just adding more protobuf definitions not doing nothing new with them(yet),
| Commit: | 4de5a89 | |
|---|---|---|
| Author: | Dylan Jew | |
| Committer: | GitHub | |
Add additional JobRun stats for blackbox fuzzers (#5238) This PR aims to improve our ability to benchmark blackbox fuzzers effectiveness and monitor their health. ## Context When measuring fuzzer effectiveness, we’re interested in the rate at which the fuzzer can execute testcases and find bugs. This requires a baseline definition of total fuzzing hours across all types of fuzzers. Some of these stats are already computed for Monarch monitoring in `monitoring_metrics.py`, but we'd like to get them into BigQuery to have a consistent data source for analysis ## Changes Adds `testcases_generated`, `testcase_execution_duration`, `testcase_generation_duration`, and `fuzzing_duration` to the uworker `FuzzTaskOutput` proto and write those stats to the JobRun BigQuery table. ## Notes This only adds metrics for blackbox fuzzers. We will need to aggregate the fuzzing session hours and execution metrics we already store in the TestcaseRun tables for engine guided fuzzers if we want comparisons across fuzzer types. This either means we need to aggregate those tables and write to the JobRun tables, or do the aggregation in our plx workflows/scripts. ## Testing - [x] Ran the server locally, uploaded a fuzzer, and ran a bot locally with additional logs and local bigquery writes enabled. Verified that the stats were added to the `FuzzTaskOutput` proto and written to BigQuery logs from running a local bot: https://paste.googleplex.com/4551083230887936 local BigQuery stats: https://paste.googleplex.com/6697329928306688 - [x] Test on dev and verify the stats are successfully written to the BigQuery tables dev BigQuery json: https://paste.googleplex.com/4627780642930688 dev BigQuery table https://paste.googleplex.com/6251944436957184 Added unit tests for the stats
| Commit: | bdd9c2b | |
|---|---|---|
| Author: | Dylan Jew | |
| Committer: | Dylan Jew | |
Add total_fuzzing_time_seconds to FuzzTaskOutput
| Commit: | 043b7ad | |
|---|---|---|
| Author: | Javan Lacerda | |
implement max cpu monitor Signed-off-by: Javan Lacerda <javanlacerda@google.com>
| Commit: | 1eea562 | |
|---|---|---|
| Author: | Vinicius da Costa | |
| Committer: | GitHub | |
Copy fuzzer script logs to correct buckets (#5099) Handler for `store_fuzzer_run_results` in postprocess (#3406) was not adding the fuzzer script logs to the correct structured buckets, as expected by the fuzzer page on the UI. This PR tries to fix it by copying the data from the blob store to the expected buckets during postprocess. b/361867455
| Commit: | 854f286 | |
|---|---|---|
| Author: | google-labs-jules[bot] | |
| Committer: | GitHub | |
Download databundles for non engine jobs (#5085) This fixes b/446692241 by downloading databundles on blacbox fuzzer runs. It does so without hurting the performance of non-blackbox batch tasks. Since downloading the default databundle takes ~5 minutes. It also optimizes the unzip by about 50% by using the linux unzip binary instead of Python's slow implementation. --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> Co-authored-by: jonathanmetzman <31354670+jonathanmetzman@users.noreply.github.com> Co-authored-by: Jonathan Metzman <metzman@chromium.org>
| Commit: | 27d7fa1 | |
|---|---|---|
| Author: | Jonathan Metzman | |
tmp
| Commit: | b4ee8d9 | |
|---|---|---|
| Author: | Jonathan Metzman | |
tmp
| Commit: | 73d44ec | |
|---|---|---|
| Author: | Vinicius da Costa | |
| Committer: | GitHub | |
[Fix] Correctly set testcase build url and gn args for fuzzing on batch (#5013) Fix missing testcase metadata when fuzz task is running on batch (or any non-local execution). #### Context Some build-related environment variables (`build_url`, `build_key` and `gn_args_path`) are set during the build setup on fuzz task main stage. These should be retrieved during postprocess to set the testcase's metadata, which is used to display the build url and the gn args config section on the clusterfuzz UI. However, for non-local execution, these variables are not propagated through the `uworker_output` proto and are missing in postprocess, so any testcase created during fuzzing on batch is not displaying these values. #### Changes * Added the `build_url`, `build_key` and `gn_args` fields to the fuzz task output message. * Added the logic to store these fields and use them to set the initial testcase metadata. #### Tests * Testing on development environment is ineffective as it is not currently running fuzz tasks on batch. I deployed to dev anyway and confirmed that, at least, the local execution of fuzz tasks is still working. * Testing on prod (deployed this PR to internal) * Fuzzing hours stable after deploy: https://screenshot.googleplex.com/7JfregzBR8F6MRA.png * Logs for fuzz tasks executing on batch: https://cloudlogging.app.goo.gl/5xXpLjUdwzK6wTeR9 (main) and https://cloudlogging.app.goo.gl/nX832G1782asdMDXA (postprocess) * Logs for fuzz tasks executing on GCE VMs: https://cloudlogging.app.goo.gl/61nvxR1BwQrQnvXr8 (main) and https://cloudlogging.app.goo.gl/6yoQSvU8r1mUVxsN7 (postprocess) * Evidence of testcases creates after the deploy containing the build url and GN config args: * GCE VMs (local exec): https://clusterfuzz.com/testcase-detail/6746169883426816 * Batch: https://clusterfuzz.com/testcase-detail/6451774202249216 * Build URL: https://screenshot.googleplex.com/45n7M75hEPoEsNZ.png * GN Configs: https://screenshot.googleplex.com/9r3SxRPRQRyC4tv.png Bug: b/441128474 Related issue: https://github.com/google/clusterfuzz/issues/4914
| Commit: | e95fc4f | |
|---|---|---|
| Author: | Vinicius da Costa | |
Add build metadata to fuzz task output.
| Commit: | fbbcb5f | |
|---|---|---|
| Author: | google-labs-jules[bot] | |
feat: Implement gRPC API for Test Case Reproduction This commit introduces a new gRPC API for asynchronously reproducing test cases in ClusterFuzz. The API is designed to be a robust and scalable standard for exposing ClusterFuzz capabilities. It includes the following features: - **Asynchronous Job Management:** Clients can start reproduction jobs for multiple test cases and receive a job ID for tracking. - **Persistent State:** Job status is persisted using a simple `dbm` database to survive server restarts. - **Real-time Updates & Polling:** Supports both a server-streaming endpoint (`SubscribeToJobUpdates`) for real-time progress and a polling endpoint (`GetJobStatus`). - **Final Metrics:** A dedicated endpoint (`GetJobResults`) calculates and returns final metrics, such as success and failure percentages. - **Secure by Default:** The API is secured using an API key interceptor that reads valid keys from an environment variable (`VALID_API_KEYS`). The implementation is separated into modules for the server, job management, authentication, and integration with the existing `butler` reproduction logic. A new public function was added to the `butler` script to provide a clean API for this integration.
| Commit: | feb371b | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
[batch] Support trials. (#4890) The old method requires db access in main, which is no longer allowed. Trials are a feature allowing experimental flags to be used in certain chrome and v8 builds. CC @mi-ac
| Commit: | 514ab3d | |
|---|---|---|
| Author: | Jonathan Metzman | |
[batch] Support trials.
| Commit: | 61fc24d | |
|---|---|---|
| Author: | Jonathan Metzman | |
fix
| Commit: | f2cd734 | |
|---|---|---|
| Author: | google-labs-jules[bot] | |
Refactor trial selection and implement hybrid approach with lists
| Commit: | 7f98def | |
|---|---|---|
| Author: | google-labs-jules[bot] | |
I've moved the trial selection to the preprocessing step.
| Commit: | 96d813d | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Merge OSS-Fuzz branch into master (#4797) This merges the OSS-Fuzz branch into master. The branches diverged when support for fuzzing on batch was added to OSS-Fuzz. Among other things this: Added scheduling of fuzz tasks and made a lot of optimizations to it, in order to deal with challenges filling up our capacity with fuzzing. Optimized things like corpus signing, downloading and pruning as previously these had not been run at OSS-Fuzz scale and levels of diversity. --------- Co-authored-by: Vitor Guidi <vitorguidi@gmail.com> Co-authored-by: Ali HIJAZI <ahijazi@google.com> Co-authored-by: Vinicius da Costa <vtcosta@google.com>
| Commit: | 77a34b5 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | Jonathan Metzman | |
Use corpus backup as base for corpus. (#4721) Use corpus backup as base for corpus when fuzzing. This reduces time to start fuzzing (including signing the URLs in preprocess and downloading the urls in main) from 5 minutes to 20 seconds in tests I did. It should make downloads even faster than they were before the batch migration. TODO: Do this for pruning.
| Commit: | 5d59e5c | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Upload crashes to logs bucket in permissionless way (#4400)
| Commit: | 25243d1 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Reapply "Make fuzz task work on a uworker. (#4342)" (#4351) (#4352) This reverts commit https://github.com/google/clusterfuzz/commit/90b87101cee2778bf1cb5a90f606f7273d10571c. 1. Don't assume there is a data bundle. 2. Fix typo.
| Commit: | 90b8710 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Revert "Make fuzz task work on a uworker. (#4342)" (#4351) This reverts commit 4a752d6e40bdb06ecfe56cc5b94fe9e6f12b9c9c. Causes these errors: https://pantheon.corp.google.com/errors/detail/CIa_hZWh6JKCHA;locations=global;time=P30D?project=google.com:clusterfuzz&utm_source=error-reporting-notification&utm_medium=email&utm_content=new-error&e=-13802955&mods=logs_tg_prod https://pantheon.corp.google.com/errors/detail/CIa_hZWh6JKCHA;locations=global;time=P30D?project=google.com:clusterfuzz&utm_source=error-reporting-notification&utm_medium=email&utm_content=new-error&e=-13802955&mods=logs_tg_prod
| Commit: | 4a752d6 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Make fuzz task work on a uworker. (#4342) This has been verified locally. This involved: * Get data bundle directory in an untrusted manner. * Upload fuzzing engine output in an untrusted manner. * Not checking for last corpus sync on a uworker. This is a trusted operation and is uneeded because uworkers do not outlive the task and thus will never have the corpus. * Refactor upload_log so callers aren't exposed to its internals.
| Commit: | 60143b4 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Fix permissions issue in analyze uworker_main (#4348) Close testcases in postprocess. Fixes: crbug.com/374738561
| Commit: | 0a8754d | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Make sure we serialize objects before putting them in a proto. (#4323) Follow up on: https://github.com/google/clusterfuzz/pull/4316 Fixes: https://pantheon.corp.google.com/errors/detail/CKnhiqX14viPPw;time=PT1H;locations=global?project=google.com:clusterfuzz
| Commit: | e7d16e6 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Harmonize trusted host and normal corpus pruning code. (#4308) Get rid of CorpusCrash. Use CrashInfo everywhere. Using CrashInfo in some places breaks oss-fuzz corpus pruning when there is a crash in the corpus, because we expect to be using the unit_name which CrashInfo doesn't have. It was kind of crazy to have two totally different objects passed to the same function (only similarity is basically ducktyped).
| Commit: | 37653b3 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Reland get fuzz target in preprocess and fix simple issue assuming all jobs have fuzz target (#4259)
| Commit: | 6db190c | |
|---|---|---|
| Author: | Jonathan Metzman | |
Reapply "[fuzz_task] Get fuzz target weights in preprocess (#4192)" (#4258) This reverts commit ab0ebe16e627caeb4692c0aed70b276afe690082.
| Commit: | ab0ebe1 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Revert "[fuzz_task] Get fuzz target weights in preprocess (#4192)" (#4258) This reverts commit b765e4ad88758522350c8e7c451dbc4be5e139e0. Reverting due to exceptions.
| Commit: | b765e4a | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
[fuzz_task] Get fuzz target weights in preprocess (#4192)
| Commit: | 316cb7c | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Revert "Revert rearch PRs from today. (#4209)" (#4227) This reverts commit 1b8ca0d94266d741bfd1da8eaaba52c40f768f19. This is safe to land because I am around to fix it.
| Commit: | aa426a9 | |
|---|---|---|
| Author: | Ali HIJAZI | |
| Committer: | GitHub | |
Add the possibility to push tasks to swarming (#3996)
| Commit: | 1b8ca0d | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Revert rearch PRs from today. (#4209) They should be working, but I be around to fix them.
| Commit: | 069cad0 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Fix exception in build_data (#4206)
| Commit: | aba10fc | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
[fuzz_task][rearch] Handle bad builds in postprocess (#4201)
| Commit: | d6ce764 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Handle issue metadata properly (#4174) Since it's a heterogenous dictionary, we must store it as a string representation of a json dict (as unwieldy as this is, it's the only correct way to do this). Fixes: https://pantheon.corp.google.com/errors/detail/CODtycKwtN-pGA;filter=%5B%22Type%22%5D;time=P30D;locations=global?e=-13802955&invt=AbZgCw&mods=logs_tg_prod&project=google.com:cluster-fuzz ``` Bar chart Sample stack trace Parsed Raw TypeError: bad argument type for built-in operation at .update ( <frozen _collections_abc>:949 ) at .find_fixed_range ( /mnt/scratch0/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/utasks/progression_task.py:567 ) at .utask_main ( /mnt/scratch0/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/utasks/progression_task.py:671 ) at .uworker_main_no_io ( /mnt/scratch0/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/utasks/__init__.py:211 ) at .execute_locally ( /mnt/scratch0/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/task_types.py:63 ) at .execute ( /mnt/scratch0/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/task_types.py:127 ) at .run_command ( /mnt/scratch0/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/commands.py:218 ) at .process_command_impl ( /mnt/scratch0/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/commands.py:429 ) at .wrapper ( /mnt/scratch0/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/commands.py:159 ) at .process_command ( /mnt/scratch0/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/commands.py:248 ) at .task_loop ( /mnt/scratch0/clusterfuzz/src/python/bot/startup/run_bot.py:146 ) ```
| Commit: | 792fa75 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Prevent integer overflow by using int64 instead of int32 (#4184) Fixes: ``` ValueError: Value out of range: 2148226322 at ._extract_coverage_information ( /mnt/scratch0/bots/oss-fuzz-linux-zone5-host-qp4x-2/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/utasks/corpus_pruning_task.py:978 ) at .utask_main ( /mnt/scratch0/bots/oss-fuzz-linux-zone5-host-qp4x-2/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/utasks/corpus_pruning_task.py:1029 ) ```
| Commit: | f827e6d | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | Jonathan Metzman | |
Ensure archived field is sent to utask_main (#4180) Follow up to https://github.com/google/clusterfuzz/pull/4173 Fixes https://pantheon.corp.google.com/errors/detail/CNDympvhu7XrzwE;locations=global;time=P30D?project=clusterfuzz-external&utm_source=error-reporting-notification&utm_medium=email&utm_content=new-error&e=-13802955&mods=logs_tg_prod
| Commit: | cf61fa5 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Ensure archived field is sent to utask_main (#4180) Follow up to https://github.com/google/clusterfuzz/pull/4173 Fixes https://pantheon.corp.google.com/errors/detail/CNDympvhu7XrzwE;locations=global;time=P30D?project=clusterfuzz-external&utm_source=error-reporting-notification&utm_medium=email&utm_content=new-error&e=-13802955&mods=logs_tg_prod
| Commit: | 774c35c | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | Jonathan Metzman | |
Fix AttributeError: 'NoneType' object has no attribute 'corpus_pruning_task_input' (#4168) This was caused by the roll forward of oss-fuzz.
| Commit: | 7691c8e | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Fix AttributeError: 'NoneType' object has no attribute 'corpus_pruning_task_input' (#4168) This was caused by the roll forward of oss-fuzz.
| Commit: | 6a7df45 | |
|---|---|---|
| Author: | Oliver Chang | |
| Committer: | Oliver Chang | |
Propagate fuzz_targets for RemoteRegularBuild. (#4166) This is required for OSS-Fuzz after the uworker refactor. This fixes the following exception: ``` Error occurred while working on task. Traceback (most recent call last): File "/mnt/scratch0/bots/oss-fuzz-linux-zone1-host-bsw9-13/clusterfuzz/src/python/bot/startup/run_bot.py", line 146, in task_loop commands.process_command(task) File "/mnt/scratch0/bots/oss-fuzz-linux-zone1-host-bsw9-13/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/commands.py", line 249, in process_command task.high_end, task.is_command_override) File "/mnt/scratch0/bots/oss-fuzz-linux-zone1-host-bsw9-13/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/commands.py", line 159, in wrapper return func(task_name, task_argument, job_name, *args, **kwargs) File "/mnt/scratch0/bots/oss-fuzz-linux-zone1-host-bsw9-13/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/commands.py", line 433, in process_command_impl preprocess) File "/mnt/scratch0/bots/oss-fuzz-linux-zone1-host-bsw9-13/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/commands.py", line 218, in run_command result = task.execute(task_argument, job_name, uworker_env) File "/mnt/scratch0/bots/oss-fuzz-linux-zone1-host-bsw9-13/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/task_types.py", line 105, in execute self.execute_locally(task_argument, job_type, uworker_env) File "/mnt/scratch0/bots/oss-fuzz-linux-zone1-host-bsw9-13/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/task_types.py", line 63, in execute_locally uworker_output = utasks.uworker_main_no_io(self.module, uworker_input) File "/mnt/scratch0/bots/oss-fuzz-linux-zone1-host-bsw9-13/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/utasks/__init__.py", line 211, in uworker_main_no_io uworker_output = utask_module.utask_main(uworker_input) File "/mnt/scratch0/bots/oss-fuzz-linux-zone1-host-bsw9-13/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/utasks/fuzz_task.py", line 1919, in utask_main return session.run() File "/mnt/scratch0/bots/oss-fuzz-linux-zone1-host-bsw9-13/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/utasks/fuzz_task.py", line 1731, in run self.fuzz_task_output.fuzz_targets.extend(build_setup_result.fuzz_targets) TypeError: Value must be iterable ```
| Commit: | c7c9a8e | |
|---|---|---|
| Author: | Oliver Chang | |
| Committer: | GitHub | |
Propagate fuzz_targets for RemoteRegularBuild. (#4166) This is required for OSS-Fuzz after the uworker refactor. This fixes the following exception: ``` Error occurred while working on task. Traceback (most recent call last): File "/mnt/scratch0/bots/oss-fuzz-linux-zone1-host-bsw9-13/clusterfuzz/src/python/bot/startup/run_bot.py", line 146, in task_loop commands.process_command(task) File "/mnt/scratch0/bots/oss-fuzz-linux-zone1-host-bsw9-13/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/commands.py", line 249, in process_command task.high_end, task.is_command_override) File "/mnt/scratch0/bots/oss-fuzz-linux-zone1-host-bsw9-13/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/commands.py", line 159, in wrapper return func(task_name, task_argument, job_name, *args, **kwargs) File "/mnt/scratch0/bots/oss-fuzz-linux-zone1-host-bsw9-13/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/commands.py", line 433, in process_command_impl preprocess) File "/mnt/scratch0/bots/oss-fuzz-linux-zone1-host-bsw9-13/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/commands.py", line 218, in run_command result = task.execute(task_argument, job_name, uworker_env) File "/mnt/scratch0/bots/oss-fuzz-linux-zone1-host-bsw9-13/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/task_types.py", line 105, in execute self.execute_locally(task_argument, job_type, uworker_env) File "/mnt/scratch0/bots/oss-fuzz-linux-zone1-host-bsw9-13/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/task_types.py", line 63, in execute_locally uworker_output = utasks.uworker_main_no_io(self.module, uworker_input) File "/mnt/scratch0/bots/oss-fuzz-linux-zone1-host-bsw9-13/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/utasks/__init__.py", line 211, in uworker_main_no_io uworker_output = utask_module.utask_main(uworker_input) File "/mnt/scratch0/bots/oss-fuzz-linux-zone1-host-bsw9-13/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/utasks/fuzz_task.py", line 1919, in utask_main return session.run() File "/mnt/scratch0/bots/oss-fuzz-linux-zone1-host-bsw9-13/clusterfuzz/src/clusterfuzz/_internal/bot/tasks/utasks/fuzz_task.py", line 1731, in run self.fuzz_task_output.fuzz_targets.extend(build_setup_result.fuzz_targets) TypeError: Value must be iterable ```
| Commit: | f0c2459 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Remove unused proto field (#4150)
| Commit: | e9e7476 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Reland "Making crashes uworker safe (#4102)" (#4137) This reverts commit 8c2f3bcebd061dfdd40470ee2e2ddab6bf6637e1.
| Commit: | 8c2f3bc | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Revert making crashes uworker safe (#4102)
| Commit: | 8c36134 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Add back used field (#4101)
| Commit: | 87f69a2 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Fix mismatch between Crash and proto version (#4097)
| Commit: | 97758db | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Remove unused field (#4096)
| Commit: | 01a76fc | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Dont serialize unneeded field (#4092)
| Commit: | 1fa920c | |
|---|---|---|
| Author: | Vitor Guidi | |
Revert "Make fuzz crashes uworker safe (#4000)" This reverts commit 4a17b2f82cbfcfef979991df635251d9c22ac4b9.
| Commit: | 4a17b2f | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Make fuzz crashes uworker safe (#4000) This is probably the most important part of migrating fuzz_task. This superseeds: #3834 and #3816
| Commit: | d5fb5f6 | |
|---|---|---|
| Author: | Vitor Guidi | |
| Committer: | GitHub | |
Attempting to bump proto/grpcio in Python 3.7 - 3rd attempt (#4066) ### Motivation Last attempted was [reverted](https://github.com/google/clusterfuzz/pull/4064) due to an issue in utask main scheduler, related to protos and gcp batch This PR attempts to fix the following issue: ``` AttributeError: Unknown field for InstancePolicy: boot_disk at .__setattr__ ( /mnt/scratch0/clusterfuzz/src/third_party/proto/message.py:932 ) at ._get_allocation_policy ( /mnt/scratch0/clusterfuzz/src/clusterfuzz/_internal/google_cloud_utils/batch.py:182 ) at ._create_job ( /mnt/scratch0/clusterfuzz/src/clusterfuzz/_internal/google_cloud_utils/batch.py:225 ) at .create_uworker_main_batch_jobs ( /mnt/scratch0/clusterfuzz/src/clusterfuzz/_internal/google_cloud_utils/batch.py:139 ) at .schedule_utask_mains ( /mnt/scratch0/clusterfuzz/src/python/bot/startup/run_bot.py:105 ) at .task_loop ( /mnt/scratch0/clusterfuzz/src/python/bot/startup/run_bot.py:136 ) ``` ### Testing strategy This issue was caused because batch was set to 0.2.0, and the boot_disk proto field was only [introduced in 0.6.0](https://cloud.google.com/python/docs/reference/batch/latest/changelog). Returning the dependency to 0.11.0 solved the issue. This was tested manually through [use_batch.py](https://github.com/google/clusterfuzz/blob/bcae6b19f399a74ca105404284a2cad8e174627e/src/clusterfuzz/_internal/tests/core/google_cloud_utils/use_batch.py#L4), pointing to our internal gcp service. Evidence that a batch job is successfully created:  
| Commit: | bcae6b1 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Revert "Chore/py37 proto bump reattempt (#4062)" (#4064) This reverts commit 7e57e8821d35ec2b12c957239ae75c9bf33964f7. New error: ``` AttributeError: Unknown field for InstancePolicy: boot_disk at .__setattr__ ( /mnt/scratch0/clusterfuzz/src/third_party/proto/message.py:932 ) at ._get_allocation_policy ( /mnt/scratch0/clusterfuzz/src/clusterfuzz/_internal/google_cloud_utils/batch.py:182 ) at ._create_job ( /mnt/scratch0/clusterfuzz/src/clusterfuzz/_internal/google_cloud_utils/batch.py:225 ) at .create_uworker_main_batch_jobs ( /mnt/scratch0/clusterfuzz/src/clusterfuzz/_internal/google_cloud_utils/batch.py:139 ) at .schedule_utask_mains ( /mnt/scratch0/clusterfuzz/src/python/bot/startup/run_bot.py:105 ) at .task_loop ( /mnt/scratch0/clusterfuzz/src/python/bot/startup/run_bot.py:136 ) ```
| Commit: | 7e57e88 | |
|---|---|---|
| Author: | Vitor Guidi | |
| Committer: | GitHub | |
Chore/py37 proto bump reattempt (#4062) Reattempt at #4029 This PR belongs to [this initiative](https://github.com/google/clusterfuzz/issues/4059)
| Commit: | 62090e4 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Revert changes to upgrade packages. (#4061) They are broken in prod causing this error: https://pantheon.corp.google.com/errors/detail/CPv0x-n-iqv-jQE?e=-13802955&mods=logs_tg_prod&project=google.com:clusterfuzz ``` Unable to update heartbeat. Traceback (most recent call last): File "/mnt/scratch0/clusterfuzz/src/clusterfuzz/_internal/datastore/data_handler.py", line 1130, in update_heartbeat heartbeat = ndb.Key(data_types.Heartbeat, bot_name).get() File "/mnt/scratch0/clusterfuzz/src/third_party/google/cloud/ndb/_options.py", line 102, in wrapper return wrapped(*pass_args, **kwargs) File "/mnt/scratch0/clusterfuzz/src/third_party/google/cloud/ndb/utils.py", line 150, in positional_wrapper return wrapped(*args, **kwds) File "/mnt/scratch0/clusterfuzz/src/third_party/google/cloud/ndb/key.py", line 859, in get return self.get_async(_options=_options).result() File "/mnt/scratch0/clusterfuzz/src/third_party/google/cloud/ndb/tasklets.py", line 210, in result self.check_success() File "/mnt/scratch0/clusterfuzz/src/third_party/google/cloud/ndb/tasklets.py", line 157, in check_success raise self._exception File "/mnt/scratch0/clusterfuzz/src/third_party/google/cloud/ndb/tasklets.py", line 319, in _advance_tasklet yielded = self.generator.throw(type(error), error, traceback) File "/mnt/scratch0/clusterfuzz/src/third_party/google/cloud/ndb/key.py", line 944, in get entity_pb = yield _datastore_api.lookup(self._key, _options) File "/mnt/scratch0/clusterfuzz/src/third_party/google/cloud/ndb/tasklets.py", line 323, in _advance_tasklet yielded = self.generator.send(send_value) File "/mnt/scratch0/clusterfuzz/src/third_party/google/cloud/ndb/_datastore_api.py", line 165, in lookup entity_pb = yield batch.add(key) File "/mnt/scratch0/clusterfuzz/src/third_party/google/cloud/ndb/_datastore_api.py", line 217, in add todo_key = key.to_protobuf()._pb.SerializeToString() File "/mnt/scratch0/clusterfuzz/src/third_party/google/cloud/datastore/key.py", line 324, in to_protobuf key.path.append(element) TypeError: Parameter to MergeFrom() must be instance of same class: expected google.datastore.v1.Key.PathElement got PathElement. ``` Vitor says this isn't a deterministic bug.
| Commit: | a16f837 | |
|---|---|---|
| Author: | Vitor Guidi | |
| Committer: | GitHub | |
Chore/bump py37 deps (#4029) *** Motivation This PR complements #4005 by bumping the gcp clients, grpcio and protobuf, and fixing the code to accomodate for breaking changes.
| Commit: | e530a29 | |
|---|---|---|
| Author: | Vitor Guidi | |
Dropping entity proto headers for protobuf.Any, recompiling
| Commit: | b9cf5e5 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Make crash_revision an int64 (#3990) Fixes: https://pantheon.corp.google.com/errors/detail/CPquw-3h_ueTvQE;service=;version=?project=google.com:cluster-fuzz
| Commit: | 180453c | |
|---|---|---|
| Author: | Ali HIJAZI | |
| Committer: | GitHub | |
Store the backup corpus using a signed url (#3946)
| Commit: | d7f54e3 | |
|---|---|---|
| Author: | Ali HIJAZI | |
| Committer: | GitHub | |
Migrate corpus pruning [3/N] (#3905) Move `process_corpus_crashes` to postprocess: 1- From `utask_main`: Pack the crash.unit_path into a zip file and upload using a signed url 2- From `utask_postprocess`: get the zip, unpack individual files and upload necessary ones to blob storage, store the blob key in the created Testcase's `fuzzed_keys` attribute.
| Commit: | 88c8c3a | |
|---|---|---|
| Author: | Jonathan Metzman | |
Fix
| Commit: | 4307ddb | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Handle fuzz target metadata correctly and in an untrusted manner. (#3894) Previously analyze task was not retrieving the fuzz target metadata properly (this needs the build, analyze was doing it in postprocess) and progression was doing it in an unprivileged way (using the db in utask_main). Change this so we can retrieve the metadata in utask_main and save it in postprocess. Leave a TODO in corpus_pruning which isn't migrated yet.
| Commit: | 25bf084 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Move privileged operation in minimize to preprocess. (#3896) Move argument retreival to preprocess. Related: #3008 Fixes: #3888
| Commit: | 07c559b | |
|---|---|---|
| Author: | Jonathan Metzman | |
Set data bundles properly in preprocess.
| Commit: | 8fb0877 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Reland 00c0b532ef5a2ccd4b390304db11cb62414b378d (#3870) Most of the failures were either unrelated or temporary due to change in proto and updated clients not using the new proto.
| Commit: | 00c0b53 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Revert "Make data bundles uworker safe (#3868) Causing exceptions.
| Commit: | a46bc97 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Make data bundles uworker safe (#3862)
| Commit: | e6e1462 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Make test_for_crash_with_retries uworker_safe (#3865)
| Commit: | a7f2ce6 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Make test_for_reproducibility uworker safe. (#3864) All tasks that take a testcase as an argument use this function.
| Commit: | bc8305a | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
[rearchitecture] Upload more stats in postprocess (#3829)
| Commit: | cc81ff2 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Make LSAN blacklist uworker safe (#3844)
| Commit: | 843bd2c | |
|---|---|---|
| Author: | Oliver Chang | |
| Committer: | Oliver Chang | |
fuzz_task: Migrate crashes to uworker. - Add proto definitions for crash groups. - Have uworkers return serialized CrashGroups, with the input testcases uploaded via signed URLs. - Handle checking if crash is new, testcase creation etc in postprocess. - Remove old uworker_msg.CrashInfo conversion and move the job_run crash group computation to postprocess, as it relies on querying the Datastore to know if the crash is new or not. - Also handle uploading file handles in storage.upload_signed_url - Add bot_name, platform_id to uworker output. TODO: tests.
| Commit: | 6768056 | |
|---|---|---|
| Author: | Jonathan Metzman | |
fix
| Commit: | b89d9fc | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Dont make proto backwards incompatible. (#3806)
| Commit: | d56f8d7 | |
|---|---|---|
| Author: | Ali HIJAZI | |
| Committer: | GitHub | |
Migrate corpus pruning [2/N] (#3763)
| Commit: | 7dac253 | |
|---|---|---|
| Author: | Jonathan Metzman | |
Revert "Use signed URLs for corpus (#3651)" This reverts commit d65125cd0e15c9786e0c2421eff8880a8a777395.
| Commit: | 77bbf11 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Improve logging so we can see tasks postprocess and execute (#3774)
| Commit: | ac362af | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Do fuzzer selection in preprocess (#3760) Handle fuzzer selection in a way that is compatible with the fact that corpus access doesn't happen during uworker_main. This means we will not be able to record fuzz targets during main or access the corpus then, so fuzzer selection must happen first.
| Commit: | 774e37d | |
|---|---|---|
| Author: | Ali HIJAZI | |
| Committer: | GitHub | |
[Minimize] Use signed urls within utask_main and cleanup unused blobs in (#3766) postprocess. --------- Co-authored-by: jonathanmetzman <31354670+jonathanmetzman@users.noreply.github.com>
| Commit: | d65125c | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Use signed URLs for corpus (#3651)
| Commit: | ea4fcce | |
|---|---|---|
| Author: | Ali HIJAZI | |
| Committer: | GitHub | |
[Progression] call filter_stacktrace with a signed_url within utask_main (#3730)
| Commit: | 7edf640 | |
|---|---|---|
| Author: | Ali HIJAZI | |
| Committer: | GitHub | |
[Minimize] upload testcase using signed url (#3701)
| Commit: | 76d1367 | |
|---|---|---|
| Author: | Ali HIJAZI | |
| Committer: | GitHub | |
Migrate corpus pruning 2 (#3675) Co-authored-by: jonathanmetzman <31354670+jonathanmetzman@users.noreply.github.com>
| Commit: | 7c8b676 | |
|---|---|---|
| Author: | Jonathan Metzman | |
merge
| Commit: | 048c2e6 | |
|---|---|---|
| Author: | Ali HIJAZI | |
| Committer: | GitHub | |
[Progression] Store testcase for regression testing using a signed url. (#3695) The testcase is now stored under a randomly generated filename instead of the testcase file hash of contents.
| Commit: | ecd05ef | |
|---|---|---|
| Author: | Ali Hijazi | |
Migrate corpus pruning 2
| Commit: | 396eec0 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
[rearchitecture] Record how long utasks take (#3679) Record how long utasks take in two ways: 1. From start to finish 2. How long each part takes. So we can figure out why batch seems to fall behind the queue-based system.
| Commit: | 88108ae | |
|---|---|---|
| Author: | Ali HIJAZI | |
| Committer: | GitHub | |
Migrate corpus pruning task [1/N] (#3670)
| Commit: | d113591 | |
|---|---|---|
| Author: | Ali HIJAZI | |
| Committer: | GitHub | |
Migrate regression task. (#3652)
| Commit: | d9bf6c8 | |
|---|---|---|
| Author: | Jonathan Metzman | |
Update to python3.11
| Commit: | fc4150e | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Handle trusted parts of store_fuzzer_run_results in pre/postprocess (#3406)
| Commit: | ef9321c | |
|---|---|---|
| Author: | Ali HIJAZI | |
| Committer: | GitHub | |
Migrate Minimize task (#3600)
| Commit: | f58d65a | |
|---|---|---|
| Author: | Ali HIJAZI | |
| Committer: | GitHub | |
[Progression] Move update_build_metadata to postprocess (#3595)
| Commit: | e890da7 | |
|---|---|---|
| Author: | jonathanmetzman | |
| Committer: | GitHub | |
Revert "[Progression] Move update_build_metadata to postprocess (#3463)" (#3593) This reverts commit d6742919725dd09c6f11e2ae9b2d874412418de8.
| Commit: | d674291 | |
|---|---|---|
| Author: | Ali HIJAZI | |
| Committer: | GitHub | |
[Progression] Move update_build_metadata to postprocess (#3463)
| Commit: | 69b3c3c | |
|---|---|---|
| Author: | Ali HIJAZI | |
| Committer: | GitHub | |
[Symbolize] Move get_stacktrace to preprocess (#3556)
| Commit: | ab4dbb6 | |
|---|---|---|
| Author: | Ali HIJAZI | |
| Committer: | GitHub | |
Use protos directly in utasks (#3536) This change removes the uworker_io wrappers and uses protos directly within the utasks. This change also removes the Json user defined proto.