From 90b87101cee2778bf1cb5a90f606f7273d10571c Mon Sep 17 00:00:00 2001 From: jonathanmetzman <31354670+jonathanmetzman@users.noreply.github.com> Date: Wed, 23 Oct 2024 11:53:26 -0400 Subject: [PATCH] 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 --- src/clusterfuzz/_internal/bot/tasks/setup.py | 19 ++++--- .../_internal/bot/tasks/utasks/fuzz_task.py | 46 ++------------- .../_internal/bot/tasks/utasks/uworker_io.py | 14 ----- .../_internal/bot/testcase_manager.py | 17 +++--- .../_internal/protos/uworker_msg.proto | 8 --- .../_internal/protos/uworker_msg_pb2.py | 56 +++++++++---------- .../_internal/protos/uworker_msg_pb2.pyi | 40 +------------ .../core/bot/tasks/utasks/fuzz_task_test.py | 10 +++- .../tests/core/bot/testcase_manager_test.py | 25 +++++---- .../untrusted_runner_integration_test.py | 2 +- 10 files changed, 78 insertions(+), 159 deletions(-) diff --git a/src/clusterfuzz/_internal/bot/tasks/setup.py b/src/clusterfuzz/_internal/bot/tasks/setup.py index b78cdd797e..ad43b3a120 100644 --- a/src/clusterfuzz/_internal/bot/tasks/setup.py +++ b/src/clusterfuzz/_internal/bot/tasks/setup.py @@ -454,7 +454,7 @@ def _should_update_data_bundle(data_bundle, data_bundle_directory): def _prepare_update_data_bundle(fuzzer, data_bundle): """Create necessary directories to download the data bundle.""" - data_bundle_directory = _get_data_bundle_directory(fuzzer, data_bundle) + data_bundle_directory = get_data_bundle_directory(fuzzer, data_bundle) if not data_bundle_directory: logs.error('Failed to setup data bundle %s.' % data_bundle.name) return None @@ -744,16 +744,17 @@ def _is_data_bundle_up_to_date(data_bundle, data_bundle_directory): return False -def get_data_bundle_directory(fuzzer, setup_input): - assert setup_input.data_bundle_corpuses[0].data_bundle - # There should only be one of these, get the first one. - data_bundle = setup_input.data_bundle_corpuses[0].data_bundle - data_bundle = uworker_io.entity_from_protobuf(data_bundle, - data_types.DataBundle) - return _get_data_bundle_directory(fuzzer, data_bundle) +def trusted_get_data_bundle_directory(fuzzer): + """For fuzz_task which doesn't get data bundles in an untrusted manner.""" + # TODO(metzman): Delete this when fuzz_task is migrated. + # Check if we have a fuzzer-specific data bundle. Use it to calculate the + # data directory we will fetch our testcases from. + data_bundle = data_types.DataBundle.query( + data_types.DataBundle.name == fuzzer.data_bundle_name).get() + return get_data_bundle_directory(fuzzer, data_bundle) -def _get_data_bundle_directory(fuzzer, data_bundle): +def get_data_bundle_directory(fuzzer, data_bundle): """Return data bundle data directory.""" # Store corpora for built-in fuzzers like libFuzzer in the same directory # as other local data bundles. This makes it easy to clear them when we run diff --git a/src/clusterfuzz/_internal/bot/tasks/utasks/fuzz_task.py b/src/clusterfuzz/_internal/bot/tasks/utasks/fuzz_task.py index 2e58a41b76..2d55c18de0 100644 --- a/src/clusterfuzz/_internal/bot/tasks/utasks/fuzz_task.py +++ b/src/clusterfuzz/_internal/bot/tasks/utasks/fuzz_task.py @@ -70,8 +70,6 @@ THREAD_WAIT_TIMEOUT = 1 MAX_CRASHES_UPLOADED = 64 -ENGINE_OUTPUT_LIMIT = 10 * 2**20 - class FuzzTaskError(Exception): """Fuzz task exception.""" @@ -550,11 +548,7 @@ def sync_from_gcs(self): # Check if the corpus was recently synced. If yes, set a flag so that we # don't sync it again and save some time. - # TODO(metzman): Consider removing this after migration is complete. It - # probably doesn't save much time as corpus syncing is super fast after - # async syncing was added. - if not environment.is_uworker() and last_sync_time and os.path.exists( - self._corpus_directory): + if last_sync_time and os.path.exists(self._corpus_directory): last_update_time = storage.last_updated(self._get_gcs_url()) if last_update_time and last_sync_time > last_update_time: logs.info('Corpus for target %s has no new updates, skipping rsync.' % @@ -1490,7 +1484,6 @@ def do_engine_fuzzing(self, engine_impl): fuzzer_metadata = {} return_code = 1 # Vanilla return-code for engine crashes. - self.fuzz_task_output.app_revision = environment.get_value('APP_REVISION') # Do the actual fuzzing. for fuzzing_round in range(environment.get_value('MAX_TESTCASES', 1)): logs.info(f'Fuzzing round {fuzzing_round}.') @@ -1520,9 +1513,9 @@ def do_engine_fuzzing(self, engine_impl): float(testcase_run.timestamp)) crash_result_obj = crash_result.CrashResult( return_code, result.time_executed, result.logs) - output = crash_result_obj.get_stacktrace() - self.fuzz_task_output.engine_outputs.append( - _to_engine_output(output, return_code, log_time)) + log = testcase_manager.prepare_log_for_upload( + crash_result_obj.get_stacktrace(), return_code) + testcase_manager.upload_log(log, log_time) for crash in result.crashes: testcase_manager.upload_testcase(crash.input_path, log_time) @@ -1771,8 +1764,7 @@ def run(self): # Data bundle directories can also have testcases which are kept in-place # because of dependencies. - self.data_directory = setup.get_data_bundle_directory( - self.fuzzer, self.uworker_input.setup_input) + self.data_directory = setup.trusted_get_data_bundle_directory(self.fuzzer) if not self.data_directory: logs.error( 'Unable to setup data bundle %s.' % self.fuzzer.data_bundle_name) @@ -2027,29 +2019,7 @@ def save_fuzz_targets(output): output.uworker_input.job_type) -def _to_engine_output(output: str, return_code: int, - log_time: datetime.datetime): - """Returns an EngineOutput proto.""" - truncated_output = truncate_fuzzer_output(output, ENGINE_OUTPUT_LIMIT) - if len(output) != len(truncated_output): - logs.warning('Fuzzer output truncated.') - - proto_timestamp = uworker_io.timestamp_to_proto_timestamp(log_time) - engine_output = uworker_msg_pb2.EngineOutput( - output=bytes(truncated_output, 'utf-8'), - return_code=return_code, - timestamp=proto_timestamp) - return engine_output - - -def _upload_engine_output_log(engine_output): - timestamp = uworker_io.proto_timestamp_to_timestamp(engine_output.timestamp) - testcase_manager.upload_log(engine_output.output, engine_output.return_code, - timestamp) - - def utask_postprocess(output): - """Postprocesses fuzz_task.""" if output.error_type != uworker_msg_pb2.ErrorType.NO_ERROR: # pylint: disable=no-member _ERROR_HANDLER.handle(output) return @@ -2057,10 +2027,4 @@ def utask_postprocess(output): save_fuzz_targets(output) session = _make_session(output.uworker_input) - # TODO(metzman): Get rid of this method and move functionality to this - # function. session.postprocess(output) - # TODO(b/374776013): Refactor this code so the uploads happen during - # utask_main. - for engine_output in output.fuzz_task_output.engine_output: - _upload_engine_output_log(engine_output) diff --git a/src/clusterfuzz/_internal/bot/tasks/utasks/uworker_io.py b/src/clusterfuzz/_internal/bot/tasks/utasks/uworker_io.py index 348bf602db..77b63c89d9 100644 --- a/src/clusterfuzz/_internal/bot/tasks/utasks/uworker_io.py +++ b/src/clusterfuzz/_internal/bot/tasks/utasks/uworker_io.py @@ -22,7 +22,6 @@ from google.cloud.datastore_v1.types import entity as entity_pb2 from google.cloud.ndb import model from google.protobuf import any_pb2 -from google.protobuf import timestamp_pb2 import google.protobuf.message from clusterfuzz._internal.base import task_utils @@ -31,9 +30,6 @@ from clusterfuzz._internal.protos import uworker_msg_pb2 from clusterfuzz._internal.system import environment -# Define an alias to appease pylint. -Timestamp = timestamp_pb2.Timestamp # pylint: disable=no-member - def generate_new_input_file_name() -> str: """Generates a new input file name.""" @@ -219,13 +215,3 @@ def check_handling_testcase_safe(testcase): # TODO(https://b.corp.google.com/issues/328691756): Change this to # log_fatal_and_exit once we are handling untrusted tasks properly. logs.warning(f'Cannot handle {testcase.key.id()} in trusted task.') - - -def timestamp_to_proto_timestamp(pydt) -> Timestamp: - proto_timestamp = Timestamp() - proto_timestamp.FromDatetime(pydt) - return proto_timestamp - - -def proto_timestamp_to_timestamp(proto_timestamp: Timestamp): - return proto_timestamp.ToDatetime() diff --git a/src/clusterfuzz/_internal/bot/testcase_manager.py b/src/clusterfuzz/_internal/bot/testcase_manager.py index e86e0e9d91..4109653c3c 100644 --- a/src/clusterfuzz/_internal/bot/testcase_manager.py +++ b/src/clusterfuzz/_internal/bot/testcase_manager.py @@ -539,7 +539,9 @@ def _do_run_testcase_and_return_result_in_queue(crash_queue, if upload_output: # Include full output for uploaded logs (crash output, merge output, etc). crash_result_full = CrashResult(return_code, crash_time, output) - upload_log(crash_result_full.get_stacktrace(), return_code, log_time) + log = prepare_log_for_upload(crash_result_full.get_stacktrace(), + return_code) + upload_log(log, log_time) except Exception: logs.error('Exception occurred while running ' 'run_testcase_and_return_result_in_queue.') @@ -847,10 +849,10 @@ def test_for_reproducibility(fuzz_target, expected_security_flag) -def _prepare_log_for_upload(symbolized_output, return_code, app_revision): +def prepare_log_for_upload(symbolized_output, return_code): """Prepare log for upload.""" # Add revision information to the logs. - app_revision = app_revision or environment.get_value('APP_REVISION') + app_revision = environment.get_value('APP_REVISION') job_name = environment.get_value('JOB_NAME') components = revisions.get_component_list(app_revision, job_name) component_revisions = ( @@ -865,16 +867,15 @@ def _prepare_log_for_upload(symbolized_output, return_code, app_revision): if environment.is_android(): bot_header += f'Device serial: {environment.get_value("ANDROID_SERIAL")}\n' - return_code_header = f'Return code: {return_code}\n\n' + return_code_header = "Return code: %s\n\n" % return_code - result = ( - revisions_header + bot_header + return_code_header + symbolized_output) + result = revisions_header + bot_header + return_code_header +\ + symbolized_output return result.encode('utf-8') -def upload_log(symbolized_output, return_code, log_time, app_revision=None): +def upload_log(log, log_time): """Upload the output into corresponding GCS logs bucket.""" - log = _prepare_log_for_upload(symbolized_output, return_code, app_revision) fuzz_logs_bucket = environment.get_value('FUZZ_LOGS_BUCKET') if not fuzz_logs_bucket: return diff --git a/src/clusterfuzz/_internal/protos/uworker_msg.proto b/src/clusterfuzz/_internal/protos/uworker_msg.proto index 4bda3b9147..c0528fb16d 100644 --- a/src/clusterfuzz/_internal/protos/uworker_msg.proto +++ b/src/clusterfuzz/_internal/protos/uworker_msg.proto @@ -236,12 +236,6 @@ message FuzzTaskCrashGroup { optional bool one_time_crasher_flag = 4; } -message EngineOutput { - optional bytes output = 1; - optional int64 return_code = 2; - google.protobuf.Timestamp timestamp = 3; -} - message FuzzTaskOutput { // TODO(metzman): Remove this since tworkers should know what this is based on // the input. @@ -256,8 +250,6 @@ message FuzzTaskOutput { repeated string testcase_run_jsons = 12; repeated FuzzTaskCrashGroup crash_groups = 13; optional BuildData build_data = 14; - optional int64 app_revision = 15; - repeated EngineOutput engine_outputs = 16; } message MinimizeTaskOutput { diff --git a/src/clusterfuzz/_internal/protos/uworker_msg_pb2.py b/src/clusterfuzz/_internal/protos/uworker_msg_pb2.py index 9f902545d5..56c871703f 100644 --- a/src/clusterfuzz/_internal/protos/uworker_msg_pb2.py +++ b/src/clusterfuzz/_internal/protos/uworker_msg_pb2.py @@ -30,7 +30,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n.clusterfuzz/_internal/protos/uworker_msg.proto\x12\x0buworker_msg\x1a\x19google/protobuf/any.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x85\x03\n\nSetupInput\x12)\n\x06\x66uzzer\x18\x01 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x88\x01\x01\x12\x18\n\x0b\x66uzzer_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\"\n\x15\x66uzzer_log_upload_url\x18\x04 \x01(\tH\x02\x88\x01\x01\x12 \n\x13\x66uzzer_download_url\x18\x05 \x01(\tH\x03\x88\x01\x01\x12\"\n\x15testcase_download_url\x18\x06 \x01(\tH\x04\x88\x01\x01\x12$\n\x1cglobal_blacklisted_functions\x18\x07 \x03(\t\x12;\n\x14\x64\x61ta_bundle_corpuses\x18\x08 \x03(\x0b\x32\x1d.uworker_msg.DataBundleCorpusB\t\n\x07_fuzzerB\x0e\n\x0c_fuzzer_nameB\x18\n\x16_fuzzer_log_upload_urlB\x16\n\x14_fuzzer_download_urlB\x18\n\x16_testcase_download_url\")\n\x10\x41nalyzeTaskInput\x12\x15\n\rbad_revisions\x18\x01 \x03(\x03\"P\n\x12SymbolizeTaskInput\x12!\n\x14old_crash_stacktrace\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x17\n\x15_old_crash_stacktrace\"C\n\rBlobUploadUrl\x12\x10\n\x03key\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x03url\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x06\n\x04_keyB\x06\n\x04_url\"\xb9\x03\n\rFuzzTaskInput\x12\'\n\x1asample_testcase_upload_key\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\'\n\x1asample_testcase_upload_url\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\"\n\x15script_log_upload_url\x18\x03 \x01(\tH\x02\x88\x01\x01\x12.\n\x0b\x66uzz_target\x18\x04 \x01(\x0b\x32\x14.google.protobuf.AnyH\x03\x88\x01\x01\x12\x32\n\x06\x63orpus\x18\x05 \x01(\x0b\x32\x1d.uworker_msg.FuzzTargetCorpusH\x04\x88\x01\x01\x12$\n\x1cglobal_blacklisted_functions\x18\x06 \x03(\t\x12\x35\n\x11\x63rash_upload_urls\x18\x07 \x03(\x0b\x32\x1a.uworker_msg.BlobUploadUrlB\x1d\n\x1b_sample_testcase_upload_keyB\x1d\n\x1b_sample_testcase_upload_urlB\x18\n\x16_script_log_upload_urlB\x0e\n\x0c_fuzz_targetB\t\n\x07_corpus\"\x89\x01\n\x10\x44\x61taBundleCorpus\x12.\n\x0b\x64\x61ta_bundle\x18\x01 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x88\x01\x01\x12\x14\n\x07gcs_url\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x13\n\x0b\x63orpus_urls\x18\x03 \x03(\tB\x0e\n\x0c_data_bundleB\n\n\x08_gcs_url\"\x82\x02\n\x10\x46uzzTargetCorpus\x12(\n\x06\x63orpus\x18\x01 \x01(\x0b\x32\x13.uworker_msg.CorpusH\x00\x88\x01\x01\x12\x34\n\x12regressions_corpus\x18\x02 \x01(\x0b\x32\x13.uworker_msg.CorpusH\x01\x88\x01\x01\x12\x13\n\x06\x65ngine\x18\x03 \x01(\tH\x02\x88\x01\x01\x12*\n\x1dproject_qualified_target_name\x18\x04 \x01(\tH\x03\x88\x01\x01\x42\t\n\x07_corpusB\x15\n\x13_regressions_corpusB\t\n\x07_engineB \n\x1e_project_qualified_target_name\"\xfe\x01\n\x06\x43orpus\x12\x38\n\x0b\x63orpus_urls\x18\x01 \x03(\x0b\x32#.uworker_msg.Corpus.CorpusUrlsEntry\x12:\n\x11last_updated_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x88\x01\x01\x12\x14\n\x07gcs_url\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x13\n\x0bupload_urls\x18\x04 \x03(\t\x1a\x31\n\x0f\x43orpusUrlsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x14\n\x12_last_updated_timeB\n\n\x08_gcs_url\"\x92\x02\n\x11MinimizeTaskInput\x12 \n\x13testcase_upload_url\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1f\n\x12testcase_blob_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12!\n\x14stacktrace_blob_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\"\n\x15stacktrace_upload_url\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x11\n\targuments\x18\x05 \x03(\tB\x16\n\x14_testcase_upload_urlB\x15\n\x13_testcase_blob_nameB\x17\n\x15_stacktrace_blob_nameB\x18\n\x16_stacktrace_upload_url\",\n\x13RegressionTaskInput\x12\x15\n\rbad_revisions\x18\x01 \x03(\x03\"\x81\x02\n\x14ProgressionTaskInput\x12\x1a\n\rcustom_binary\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x15\n\rbad_revisions\x18\x02 \x03(\x03\x12$\n\x17regression_testcase_url\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x16\n\tblob_name\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\"\n\x15stacktrace_upload_url\x18\x05 \x01(\tH\x03\x88\x01\x01\x42\x10\n\x0e_custom_binaryB\x1a\n\x18_regression_testcase_urlB\x0c\n\n_blob_nameB\x18\n\x16_stacktrace_upload_url\"\xcb\x01\n\x19\x43rossPollinateFuzzerProto\x12.\n\x0b\x66uzz_target\x18\x01 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x88\x01\x01\x12\x1f\n\x12\x62\x61\x63kup_bucket_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1f\n\x12\x63orpus_engine_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x0e\n\x0c_fuzz_targetB\x15\n\x13_backup_bucket_nameB\x15\n\x13_corpus_engine_name\"\xb9\x05\n\x16\x43orpusPruningTaskInput\x12.\n\x0b\x66uzz_target\x18\x01 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x88\x01\x01\x12\"\n\x15last_execution_failed\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12G\n\x17\x63ross_pollinate_fuzzers\x18\x03 \x03(\x0b\x32&.uworker_msg.CrossPollinateFuzzerProto\x12\x32\n\x06\x63orpus\x18\x04 \x01(\x0b\x32\x1d.uworker_msg.FuzzTargetCorpusH\x02\x88\x01\x01\x12=\n\x11quarantine_corpus\x18\x05 \x01(\x0b\x32\x1d.uworker_msg.FuzzTargetCorpusH\x03\x88\x01\x01\x12%\n\x18\x63orpus_crashes_blob_name\x18\x06 \x01(\tH\x04\x88\x01\x01\x12&\n\x19\x63orpus_crashes_upload_url\x18\x07 \x01(\tH\x05\x88\x01\x01\x12!\n\x14\x64\x61ted_backup_gcs_url\x18\x08 \x01(\tH\x06\x88\x01\x01\x12\"\n\x15latest_backup_gcs_url\x18\t \x01(\tH\x07\x88\x01\x01\x12$\n\x17\x64\x61ted_backup_signed_url\x18\n \x01(\tH\x08\x88\x01\x01\x42\x0e\n\x0c_fuzz_targetB\x18\n\x16_last_execution_failedB\t\n\x07_corpusB\x14\n\x12_quarantine_corpusB\x1b\n\x19_corpus_crashes_blob_nameB\x1c\n\x1a_corpus_crashes_upload_urlB\x17\n\x15_dated_backup_gcs_urlB\x18\n\x16_latest_backup_gcs_urlB\x1a\n\x18_dated_backup_signed_url\"\xd3\x0b\n\x05Input\x12+\n\x08testcase\x18\x01 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x88\x01\x01\x12;\n\x18testcase_upload_metadata\x18\x02 \x01(\x0b\x32\x14.google.protobuf.AnyH\x01\x88\x01\x01\x12\x18\n\x0btestcase_id\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x37\n\x0buworker_env\x18\x04 \x03(\x0b\x32\".uworker_msg.Input.UworkerEnvEntry\x12\x15\n\x08job_type\x18\x06 \x01(\tH\x03\x88\x01\x01\x12&\n\x19uworker_output_upload_url\x18\x07 \x01(\tH\x04\x88\x01\x01\x12>\n\x12variant_task_input\x18\x08 \x01(\x0b\x32\x1d.uworker_msg.VariantTaskInputH\x05\x88\x01\x01\x12\x18\n\x0b\x66uzzer_name\x18\t \x01(\tH\x06\x88\x01\x01\x12\x31\n\x0bsetup_input\x18\n \x01(\x0b\x32\x17.uworker_msg.SetupInputH\x07\x88\x01\x01\x12>\n\x12\x61nalyze_task_input\x18\x0b \x01(\x0b\x32\x1d.uworker_msg.AnalyzeTaskInputH\x08\x88\x01\x01\x12K\n\x19\x63orpus_pruning_task_input\x18\x0c \x01(\x0b\x32#.uworker_msg.CorpusPruningTaskInputH\t\x88\x01\x01\x12\x38\n\x0f\x66uzz_task_input\x18\r \x01(\x0b\x32\x1a.uworker_msg.FuzzTaskInputH\n\x88\x01\x01\x12@\n\x13minimize_task_input\x18\x0e \x01(\x0b\x32\x1e.uworker_msg.MinimizeTaskInputH\x0b\x88\x01\x01\x12\x46\n\x16progression_task_input\x18\x0f \x01(\x0b\x32!.uworker_msg.ProgressionTaskInputH\x0c\x88\x01\x01\x12\x44\n\x15regression_task_input\x18\x10 \x01(\x0b\x32 .uworker_msg.RegressionTaskInputH\r\x88\x01\x01\x12\x42\n\x14symbolize_task_input\x18\x11 \x01(\x0b\x32\x1f.uworker_msg.SymbolizeTaskInputH\x0e\x88\x01\x01\x12\x18\n\x0bmodule_name\x18\x12 \x01(\tH\x0f\x88\x01\x01\x12>\n\x15preprocess_start_time\x18\x13 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x10\x88\x01\x01\x12$\n\x1cglobal_blacklisted_functions\x18\x14 \x03(\t\x12.\n\x0b\x66uzz_target\x18\x15 \x01(\x0b\x32\x14.google.protobuf.AnyH\x11\x88\x01\x01\x1a\x31\n\x0fUworkerEnvEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0b\n\t_testcaseB\x1b\n\x19_testcase_upload_metadataB\x0e\n\x0c_testcase_idB\x0b\n\t_job_typeB\x1c\n\x1a_uworker_output_upload_urlB\x15\n\x13_variant_task_inputB\x0e\n\x0c_fuzzer_nameB\x0e\n\x0c_setup_inputB\x15\n\x13_analyze_task_inputB\x1c\n\x1a_corpus_pruning_task_inputB\x12\n\x10_fuzz_task_inputB\x16\n\x14_minimize_task_inputB\x19\n\x17_progression_task_inputB\x18\n\x16_regression_task_inputB\x17\n\x15_symbolize_task_inputB\x0e\n\x0c_module_nameB\x18\n\x16_preprocess_start_timeB\x0e\n\x0c_fuzz_target\"H\n\x10VariantTaskInput\x12\x1e\n\x11original_job_type\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x14\n\x12_original_job_type\"\xc7\x02\n\x13SymbolizeTaskOutput\x12\x17\n\ncrash_type\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rcrash_address\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x63rash_state\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x10\x63rash_stacktrace\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x17\n\nsymbolized\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12\x1b\n\x0e\x63rash_revision\x18\x06 \x01(\x03H\x05\x88\x01\x01\x12\x16\n\tbuild_url\x18\x07 \x01(\tH\x06\x88\x01\x01\x42\r\n\x0b_crash_typeB\x10\n\x0e_crash_addressB\x0e\n\x0c_crash_stateB\x13\n\x11_crash_stacktraceB\r\n\x0b_symbolizedB\x11\n\x0f_crash_revisionB\x0c\n\n_build_url\"\x93\x06\n\x11\x41nalyzeTaskOutput\x12\x1b\n\x0e\x63rash_revision\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12\x1a\n\rabsolute_path\x18\x02 \x01(\tH\x01\x88\x01\x01\x12 \n\x13minimized_arguments\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x10\x63rash_stacktrace\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x1b\n\x0e\x63rash_info_set\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12\x16\n\thttp_flag\x18\x06 \x01(\x08H\x05\x88\x01\x01\x12\x17\n\ncrash_type\x18\x07 \x01(\tH\x06\x88\x01\x01\x12\x1a\n\rcrash_address\x18\x08 \x01(\tH\x07\x88\x01\x01\x12\x18\n\x0b\x63rash_state\x18\t \x01(\tH\x08\x88\x01\x01\x12\x1a\n\rsecurity_flag\x18\n \x01(\x08H\t\x88\x01\x01\x12\x1e\n\x11security_severity\x18\x0b \x01(\x05H\n\x88\x01\x01\x12\"\n\x15one_time_crasher_flag\x18\x0c \x01(\x08H\x0b\x88\x01\x01\x12\x16\n\tbuild_key\x18\r \x01(\tH\x0c\x88\x01\x01\x12\x16\n\tbuild_url\x18\x0e \x01(\tH\r\x88\x01\x01\x12\x14\n\x07gn_args\x18\x0f \x01(\tH\x0e\x88\x01\x01\x12\x15\n\x08platform\x18\x10 \x01(\tH\x0f\x88\x01\x01\x12\x18\n\x0bplatform_id\x18\x11 \x01(\tH\x10\x88\x01\x01\x42\x11\n\x0f_crash_revisionB\x10\n\x0e_absolute_pathB\x16\n\x14_minimized_argumentsB\x13\n\x11_crash_stacktraceB\x11\n\x0f_crash_info_setB\x0c\n\n_http_flagB\r\n\x0b_crash_typeB\x10\n\x0e_crash_addressB\x0e\n\x0c_crash_stateB\x10\n\x0e_security_flagB\x14\n\x12_security_severityB\x18\n\x16_one_time_crasher_flagB\x0c\n\n_build_keyB\x0c\n\n_build_urlB\n\n\x08_gn_argsB\x0b\n\t_platformB\x0e\n\x0c_platform_id\"\xd1\x02\n\tCrashInfo\x12\x13\n\x06is_new\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x02 \x01(\x03H\x01\x88\x01\x01\x12\x17\n\ncrash_type\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x18\n\x0b\x63rash_state\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x1a\n\rsecurity_flag\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12\x1a\n\rcrash_address\x18\x07 \x01(\tH\x05\x88\x01\x01\x12\x1d\n\x10\x63rash_stacktrace\x18\x08 \x01(\tH\x06\x88\x01\x01\x12\x16\n\tunit_path\x18\t \x01(\tH\x07\x88\x01\x01\x42\t\n\x07_is_newB\x08\n\x06_countB\r\n\x0b_crash_typeB\x0e\n\x0c_crash_stateB\x10\n\x0e_security_flagB\x10\n\x0e_crash_addressB\x13\n\x11_crash_stacktraceB\x0c\n\n_unit_path\"\xcb\x01\n\x1bStoreFuzzerRunResultsOutput\x12\x1f\n\x12\x66uzzer_return_code\x18\x01 \x01(\x05H\x00\x88\x01\x01\x12&\n\x19generated_testcase_string\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1b\n\x0e\x63onsole_output\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x15\n\x13_fuzzer_return_codeB\x1c\n\x1a_generated_testcase_stringB\x11\n\x0f_console_output\"\xc8\x07\n\rFuzzTaskCrash\x12\x16\n\tfile_path\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x17\n\ncrash_time\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12\x18\n\x0breturn_code\x18\x03 \x01(\x05H\x02\x88\x01\x01\x12\x15\n\rresource_list\x18\x04 \x03(\t\x12\x10\n\x08gestures\x18\x05 \x03(\t\x12\x16\n\targuments\x18\x06 \x01(\tH\x03\x88\x01\x01\x12\x1a\n\x12\x66uzzing_strategies\x18\x07 \x03(\t\x12\x1a\n\rsecurity_flag\x18\x08 \x01(\x08H\x04\x88\x01\x01\x12\x1e\n\x11should_be_ignored\x18\t \x01(\x08H\x05\x88\x01\x01\x12\x16\n\thttp_flag\x18\n \x01(\x08H\x06\x88\x01\x01\x12%\n\x18\x61pplication_command_line\x18\x0b \x01(\tH\x07\x88\x01\x01\x12*\n\x1dunsymbolized_crash_stacktrace\x18\x0c \x01(\tH\x08\x88\x01\x01\x12\x17\n\ncrash_type\x18\r \x01(\tH\t\x88\x01\x01\x12\x1a\n\rcrash_address\x18\x0e \x01(\tH\n\x88\x01\x01\x12\x18\n\x0b\x63rash_state\x18\x0f \x01(\tH\x0b\x88\x01\x01\x12\x1d\n\x10\x63rash_stacktrace\x18\x10 \x01(\tH\x0c\x88\x01\x01\x12\x18\n\x10\x63rash_categories\x18\x11 \x03(\t\x12\x10\n\x03key\x18\x12 \x01(\tH\r\x88\x01\x01\x12\x15\n\x08is_valid\x18\x14 \x01(\x08H\x0e\x88\x01\x01\x12\x17\n\nfuzzed_key\x18\x15 \x01(\tH\x0f\x88\x01\x01\x12\x1a\n\rabsolute_path\x18\x16 \x01(\tH\x10\x88\x01\x01\x12\x1d\n\x10\x61rchive_filename\x18\x17 \x01(\tH\x11\x88\x01\x01\x12\x15\n\x08\x61rchived\x18\x18 \x01(\x08H\x12\x88\x01\x01\x42\x0c\n\n_file_pathB\r\n\x0b_crash_timeB\x0e\n\x0c_return_codeB\x0c\n\n_argumentsB\x10\n\x0e_security_flagB\x14\n\x12_should_be_ignoredB\x0c\n\n_http_flagB\x1b\n\x19_application_command_lineB \n\x1e_unsymbolized_crash_stacktraceB\r\n\x0b_crash_typeB\x10\n\x0e_crash_addressB\x0e\n\x0c_crash_stateB\x13\n\x11_crash_stacktraceB\x06\n\x04_keyB\x0b\n\t_is_validB\r\n\x0b_fuzzed_keyB\x10\n\x0e_absolute_pathB\x13\n\x11_archive_filenameB\x0b\n\t_archived\"\xf1\x02\n\x0b\x46uzzContext\x12\x14\n\x07redzone\x18\x01 \x01(\x05H\x00\x88\x01\x01\x12\x1a\n\rdisable_ubsan\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\x1c\n\x0fwindow_argument\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1f\n\x12timeout_multiplier\x18\x04 \x01(\x02H\x03\x88\x01\x01\x12\x19\n\x0ctest_timeout\x18\x05 \x01(\x05H\x04\x88\x01\x01\x12\x45\n\x0f\x66uzzer_metadata\x18\x06 \x03(\x0b\x32,.uworker_msg.FuzzContext.FuzzerMetadataEntry\x1a\x35\n\x13\x46uzzerMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\n\n\x08_redzoneB\x10\n\x0e_disable_ubsanB\x12\n\x10_window_argumentB\x15\n\x13_timeout_multiplierB\x0f\n\r_test_timeout\"\xff\x01\n\x12\x46uzzTaskCrashGroup\x12.\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x18.uworker_msg.FuzzContextH\x00\x88\x01\x01\x12+\n\x07\x63rashes\x18\x02 \x03(\x0b\x32\x1a.uworker_msg.FuzzTaskCrash\x12\x33\n\nmain_crash\x18\x03 \x01(\x0b\x32\x1a.uworker_msg.FuzzTaskCrashH\x01\x88\x01\x01\x12\"\n\x15one_time_crasher_flag\x18\x04 \x01(\x08H\x02\x88\x01\x01\x42\n\n\x08_contextB\r\n\x0b_main_crashB\x18\n\x16_one_time_crasher_flag\"\x87\x01\n\x0c\x45ngineOutput\x12\x13\n\x06output\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x12\x18\n\x0breturn_code\x18\x02 \x01(\x03H\x01\x88\x01\x01\x12-\n\ttimestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\t\n\x07_outputB\x0e\n\x0c_return_code\"\xca\x05\n\x0e\x46uzzTaskOutput\x12(\n\x1b\x66ully_qualified_fuzzer_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1b\n\x0e\x63rash_revision\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1e\n\x11job_run_timestamp\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x1f\n\x12testcases_executed\x18\x06 \x01(\x03H\x03\x88\x01\x01\x12I\n\x12\x66uzzer_run_results\x18\x08 \x01(\x0b\x32(.uworker_msg.StoreFuzzerRunResultsOutputH\x04\x88\x01\x01\x12\x1e\n\x11new_targets_count\x18\t \x01(\x05H\x05\x88\x01\x01\x12\x1c\n\x0f\x66uzzer_revision\x18\n \x01(\x05H\x06\x88\x01\x01\x12\x14\n\x0c\x66uzz_targets\x18\x0b \x03(\t\x12\x1a\n\x12testcase_run_jsons\x18\x0c \x03(\t\x12\x35\n\x0c\x63rash_groups\x18\r \x03(\x0b\x32\x1f.uworker_msg.FuzzTaskCrashGroup\x12/\n\nbuild_data\x18\x0e \x01(\x0b\x32\x16.uworker_msg.BuildDataH\x07\x88\x01\x01\x12\x19\n\x0c\x61pp_revision\x18\x0f \x01(\x03H\x08\x88\x01\x01\x12\x31\n\x0e\x65ngine_outputs\x18\x10 \x03(\x0b\x32\x19.uworker_msg.EngineOutputB\x1e\n\x1c_fully_qualified_fuzzer_nameB\x11\n\x0f_crash_revisionB\x14\n\x12_job_run_timestampB\x15\n\x13_testcases_executedB\x15\n\x13_fuzzer_run_resultsB\x14\n\x12_new_targets_countB\x12\n\x10_fuzzer_revisionB\r\n\x0b_build_dataB\x0f\n\r_app_revision\"\xef\x05\n\x12MinimizeTaskOutput\x12X\n\x16last_crash_result_dict\x18\x01 \x03(\x0b\x32\x38.uworker_msg.MinimizeTaskOutput.LastCrashResultDictEntry\x12\x18\n\x0b\x66laky_stack\x18\x02 \x01(\x08H\x00\x88\x01\x01\x12&\n\x19security_severity_updated\x18\x03 \x01(\x08H\x01\x88\x01\x01\x12\x1e\n\x11security_severity\x18\x04 \x01(\x05H\x02\x88\x01\x01\x12\x1f\n\x12minimization_phase\x18\x05 \x01(\x05H\x03\x88\x01\x01\x12\x10\n\x08gestures\x18\x06 \x03(\t\x12\x1b\n\x0eminimized_keys\x18\x07 \x01(\tH\x04\x88\x01\x01\x12 \n\x13minimized_arguments\x18\x08 \x01(\tH\x05\x88\x01\x01\x12\x1a\n\rarchive_state\x18\t \x01(\x05H\x06\x88\x01\x01\x12\x1a\n\rabsolute_path\x18\n \x01(\tH\x07\x88\x01\x01\x12S\n\x13memory_tool_options\x18\x0b \x03(\x0b\x32\x36.uworker_msg.MinimizeTaskOutput.MemoryToolOptionsEntry\x1a:\n\x18LastCrashResultDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x38\n\x16MemoryToolOptionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0e\n\x0c_flaky_stackB\x1c\n\x1a_security_severity_updatedB\x14\n\x12_security_severityB\x15\n\x13_minimization_phaseB\x11\n\x0f_minimized_keysB\x16\n\x14_minimized_argumentsB\x10\n\x0e_archive_stateB\x10\n\x0e_absolute_path\"\xfb\x02\n\x14RegressionTaskOutput\x12#\n\x16regression_range_start\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12!\n\x14regression_range_end\x18\x02 \x01(\x03H\x01\x88\x01\x01\x12 \n\x13last_regression_min\x18\x03 \x01(\x03H\x02\x88\x01\x01\x12 \n\x13last_regression_max\x18\x04 \x01(\x03H\x03\x88\x01\x01\x12/\n\x0f\x62uild_data_list\x18\x05 \x03(\x0b\x32\x16.uworker_msg.BuildData\x12%\n\x18is_testcase_reproducible\x18\x06 \x01(\x08H\x04\x88\x01\x01\x42\x19\n\x17_regression_range_startB\x17\n\x15_regression_range_endB\x16\n\x14_last_regression_minB\x16\n\x14_last_regression_maxB\x1b\n\x19_is_testcase_reproducible\"\xa3\x02\n\x11VariantTaskOutput\x12\x13\n\x06status\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12\x15\n\x08revision\x18\x02 \x01(\x03H\x01\x88\x01\x01\x12\x17\n\ncrash_type\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x18\n\x0b\x63rash_state\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x1a\n\rsecurity_flag\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12\x17\n\nis_similar\x18\x06 \x01(\x08H\x05\x88\x01\x01\x12\x15\n\x08platform\x18\x07 \x01(\tH\x06\x88\x01\x01\x42\t\n\x07_statusB\x0b\n\t_revisionB\r\n\x0b_crash_typeB\x0e\n\x0c_crash_stateB\x10\n\x0e_security_flagB\r\n\x0b_is_similarB\x0b\n\t_platform\"\xe7\x01\n\tBuildData\x12\x15\n\x08revision\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12\x19\n\x0cis_bad_build\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\'\n\x1ashould_ignore_crash_result\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12%\n\x18\x62uild_run_console_output\x18\x04 \x01(\tH\x03\x88\x01\x01\x42\x0b\n\t_revisionB\x0f\n\r_is_bad_buildB\x1d\n\x1b_should_ignore_crash_resultB\x1b\n\x19_build_run_console_output\"\xc8\x04\n\x15ProgressionTaskOutput\x12\x19\n\x0cmin_revision\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12\x19\n\x0cmax_revision\x18\x02 \x01(\x03H\x01\x88\x01\x01\x12\x1c\n\x0f\x63rash_on_latest\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12$\n\x17\x63rash_on_latest_message\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x1b\n\x0e\x63rash_revision\x18\x05 \x01(\x03H\x04\x88\x01\x01\x12)\n\x1clast_tested_crash_stacktrace\x18\x06 \x01(\tH\x05\x88\x01\x01\x12!\n\x14last_progression_min\x18\x07 \x01(\x03H\x06\x88\x01\x01\x12!\n\x14last_progression_max\x18\x08 \x01(\x03H\x07\x88\x01\x01\x12#\n\x16\x63lear_min_max_metadata\x18\t \x01(\x08H\x08\x88\x01\x01\x12/\n\x0f\x62uild_data_list\x18\x0b \x03(\x0b\x32\x16.uworker_msg.BuildDataB\x0f\n\r_min_revisionB\x0f\n\r_max_revisionB\x12\n\x10_crash_on_latestB\x1a\n\x18_crash_on_latest_messageB\x11\n\x0f_crash_revisionB\x1f\n\x1d_last_tested_crash_stacktraceB\x17\n\x15_last_progression_minB\x17\n\x15_last_progression_maxB\x19\n\x17_clear_min_max_metadata\"\xc6\x03\n\x1a\x43rossPollinationStatistics\x12#\n\x16project_qualified_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x07sources\x18\x02 \x01(\tH\x01\x88\x01\x01\x12 \n\x13initial_corpus_size\x18\x03 \x01(\x03H\x02\x88\x01\x01\x12\x18\n\x0b\x63orpus_size\x18\x04 \x01(\x03H\x03\x88\x01\x01\x12\"\n\x15initial_edge_coverage\x18\x05 \x01(\x03H\x04\x88\x01\x01\x12\x1a\n\redge_coverage\x18\x06 \x01(\x03H\x05\x88\x01\x01\x12%\n\x18initial_feature_coverage\x18\x07 \x01(\x03H\x06\x88\x01\x01\x12\x1d\n\x10\x66\x65\x61ture_coverage\x18\x08 \x01(\x03H\x07\x88\x01\x01\x42\x19\n\x17_project_qualified_nameB\n\n\x08_sourcesB\x16\n\x14_initial_corpus_sizeB\x0e\n\x0c_corpus_sizeB\x18\n\x16_initial_edge_coverageB\x10\n\x0e_edge_coverageB\x1b\n\x19_initial_feature_coverageB\x13\n\x11_feature_coverage\"\x97\x04\n\x13\x43overageInformation\x12\x19\n\x0cproject_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x32\n\ttimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01\x88\x01\x01\x12\x1e\n\x11\x63orpus_size_units\x18\x03 \x01(\x03H\x02\x88\x01\x01\x12\x1e\n\x11\x63orpus_size_bytes\x18\x04 \x01(\x03H\x03\x88\x01\x01\x12\x1c\n\x0f\x63orpus_location\x18\x05 \x01(\tH\x04\x88\x01\x01\x12#\n\x16\x63orpus_backup_location\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\"\n\x15quarantine_size_units\x18\x07 \x01(\x03H\x06\x88\x01\x01\x12\"\n\x15quarantine_size_bytes\x18\x08 \x01(\x03H\x07\x88\x01\x01\x12 \n\x13quarantine_location\x18\t \x01(\tH\x08\x88\x01\x01\x42\x0f\n\r_project_nameB\x0c\n\n_timestampB\x14\n\x12_corpus_size_unitsB\x14\n\x12_corpus_size_bytesB\x12\n\x10_corpus_locationB\x19\n\x17_corpus_backup_locationB\x18\n\x16_quarantine_size_unitsB\x18\n\x16_quarantine_size_bytesB\x16\n\x14_quarantine_location\"\xa5\x03\n\x17\x43orpusPruningTaskOutput\x12M\n\x17\x63ross_pollination_stats\x18\x01 \x01(\x0b\x32\'.uworker_msg.CrossPollinationStatisticsH\x00\x88\x01\x01\x12<\n\rcoverage_info\x18\x02 \x01(\x0b\x32 .uworker_msg.CoverageInformationH\x01\x88\x01\x01\x12\x1f\n\x12\x66uzzer_binary_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1b\n\x0e\x63rash_revision\x18\x04 \x01(\x03H\x03\x88\x01\x01\x12\'\n\x07\x63rashes\x18\x05 \x03(\x0b\x32\x16.uworker_msg.CrashInfo\x12#\n\x16\x63orpus_backup_uploaded\x18\x06 \x01(\x08H\x04\x88\x01\x01\x42\x1a\n\x18_cross_pollination_statsB\x10\n\x0e_coverage_infoB\x15\n\x13_fuzzer_binary_nameB\x11\n\x0f_crash_revisionB\x19\n\x17_corpus_backup_uploaded\"\xc5\t\n\x06Output\x12/\n\nerror_type\x18\x03 \x01(\x0e\x32\x16.uworker_msg.ErrorTypeH\x00\x88\x01\x01\x12.\n\ruworker_input\x18\x04 \x01(\x0b\x32\x12.uworker_msg.InputH\x01\x88\x01\x01\x12\x19\n\x0ctest_timeout\x18\x05 \x01(\x02H\x02\x88\x01\x01\x12\x17\n\ncrash_time\x18\x06 \x01(\x02H\x03\x88\x01\x01\x12$\n\x17\x63rash_stacktrace_output\x18\x07 \x01(\tH\x04\x88\x01\x01\x12\x15\n\x08\x62ot_name\x18\x12 \x01(\tH\x05\x88\x01\x01\x12\x18\n\x0bplatform_id\x18\x13 \x01(\tH\x06\x88\x01\x01\x12@\n\x13\x61nalyze_task_output\x18\x08 \x01(\x0b\x32\x1e.uworker_msg.AnalyzeTaskOutputH\x07\x88\x01\x01\x12:\n\x10\x66uzz_task_output\x18\t \x01(\x0b\x32\x1b.uworker_msg.FuzzTaskOutputH\x08\x88\x01\x01\x12\x42\n\x14minimize_task_output\x18\n \x01(\x0b\x32\x1f.uworker_msg.MinimizeTaskOutputH\t\x88\x01\x01\x12\x46\n\x16regression_task_output\x18\x0b \x01(\x0b\x32!.uworker_msg.RegressionTaskOutputH\n\x88\x01\x01\x12H\n\x17progression_task_output\x18\x0c \x01(\x0b\x32\".uworker_msg.ProgressionTaskOutputH\x0b\x88\x01\x01\x12\x44\n\x15symbolize_task_output\x18\r \x01(\x0b\x32 .uworker_msg.SymbolizeTaskOutputH\x0c\x88\x01\x01\x12@\n\x13variant_task_output\x18\x0e \x01(\x0b\x32\x1e.uworker_msg.VariantTaskOutputH\r\x88\x01\x01\x12M\n\x1a\x63orpus_pruning_task_output\x18\x10 \x01(\x0b\x32$.uworker_msg.CorpusPruningTaskOutputH\x0e\x88\x01\x01\x12\x1b\n\x0eissue_metadata\x18\x14 \x01(\tH\x0f\x88\x01\x01\x12\x1a\n\rerror_message\x18\x0f \x01(\tH\x10\x88\x01\x01\x42\r\n\x0b_error_typeB\x10\n\x0e_uworker_inputB\x0f\n\r_test_timeoutB\r\n\x0b_crash_timeB\x1a\n\x18_crash_stacktrace_outputB\x0b\n\t_bot_nameB\x0e\n\x0c_platform_idB\x16\n\x14_analyze_task_outputB\x13\n\x11_fuzz_task_outputB\x17\n\x15_minimize_task_outputB\x19\n\x17_regression_task_outputB\x1a\n\x18_progression_task_outputB\x18\n\x16_symbolize_task_outputB\x16\n\x14_variant_task_outputB\x1d\n\x1b_corpus_pruning_task_outputB\x11\n\x0f_issue_metadataB\x10\n\x0e_error_message*\x95\t\n\tErrorType\x12\x0c\n\x08NO_ERROR\x10\x00\x12\x17\n\x13\x41NALYZE_BUILD_SETUP\x10\x01\x12\x14\n\x10\x41NALYZE_NO_CRASH\x10\x02\x12\x1d\n\x19\x41NALYZE_NO_REVISIONS_LIST\x10\x03\x12\x1d\n\x19\x41NALYZE_NO_REVISION_INDEX\x10\x04\x12\x12\n\x0eTESTCASE_SETUP\x10\x05\x12\r\n\tUNHANDLED\x10\x06\x12\x17\n\x13VARIANT_BUILD_SETUP\x10\x07\x12\x12\n\x0eMINIMIZE_SETUP\x10\x08\x12\x1c\n\x18\x46UZZ_BUILD_SETUP_FAILURE\x10\t\x12\"\n\x1e\x46UZZ_DATA_BUNDLE_SETUP_FAILURE\x10\n\x12\x12\n\x0e\x46UZZ_NO_FUZZER\x10\x0b\x12 \n\x1c\x46UZZ_NO_FUZZ_TARGET_SELECTED\x10\r\x12#\n\x1fPROGRESSION_REVISION_LIST_ERROR\x10\x0e\x12\x1f\n\x1bPROGRESSION_BUILD_NOT_FOUND\x10\x0f\x12\x18\n\x14PROGRESSION_NO_CRASH\x10\x10\x12!\n\x1dPROGRESSION_BAD_STATE_MIN_MAX\x10\x11\x12\x17\n\x13PROGRESSION_TIMEOUT\x10\x12\x12\x19\n\x15PROGRESSION_BAD_BUILD\x10\x13\x12!\n\x1dPROGRESSION_BUILD_SETUP_ERROR\x10\x14\x12\"\n\x1eREGRESSION_REVISION_LIST_ERROR\x10\x15\x12\x1e\n\x1aREGRESSION_BUILD_NOT_FOUND\x10\x16\x12 \n\x1cREGRESSION_BUILD_SETUP_ERROR\x10\x17\x12\x1e\n\x1aREGRESSION_BAD_BUILD_ERROR\x10\x18\x12\x17\n\x13REGRESSION_NO_CRASH\x10\x19\x12\x1c\n\x18REGRESSION_TIMEOUT_ERROR\x10\x1a\x12\x31\n-REGRESSION_LOW_CONFIDENCE_IN_REGRESSION_RANGE\x10\x1b\x12\x1f\n\x1bSYMBOLIZE_BUILD_SETUP_ERROR\x10\x1c\x12!\n\x1dMINIMIZE_UNREPRODUCIBLE_CRASH\x10\x1d\x12\x1c\n\x18MINIMIZE_CRASH_TOO_FLAKY\x10\x1e\x12\x1e\n\x1aMINIMIZE_DEADLINE_EXCEEDED\x10\x1f\x12\x31\n-MINIMIZE_DEADLINE_EXCEEDED_IN_MAIN_FILE_PHASE\x10 \x12)\n%LIBFUZZER_MINIMIZATION_UNREPRODUCIBLE\x10!\x12!\n\x1dLIBFUZZER_MINIMIZATION_FAILED\x10\"\x12&\n\"CORPUS_PRUNING_FUZZER_SETUP_FAILED\x10#\x12\x18\n\x14\x43ORPUS_PRUNING_ERROR\x10$\x12\x12\n\x0e\x46UZZ_BAD_BUILD\x10%\x12\"\n\x1e\x41NALYZE_CLOSE_INVALID_UPLOADED\x10&b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n.clusterfuzz/_internal/protos/uworker_msg.proto\x12\x0buworker_msg\x1a\x19google/protobuf/any.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x85\x03\n\nSetupInput\x12)\n\x06\x66uzzer\x18\x01 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x88\x01\x01\x12\x18\n\x0b\x66uzzer_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\"\n\x15\x66uzzer_log_upload_url\x18\x04 \x01(\tH\x02\x88\x01\x01\x12 \n\x13\x66uzzer_download_url\x18\x05 \x01(\tH\x03\x88\x01\x01\x12\"\n\x15testcase_download_url\x18\x06 \x01(\tH\x04\x88\x01\x01\x12$\n\x1cglobal_blacklisted_functions\x18\x07 \x03(\t\x12;\n\x14\x64\x61ta_bundle_corpuses\x18\x08 \x03(\x0b\x32\x1d.uworker_msg.DataBundleCorpusB\t\n\x07_fuzzerB\x0e\n\x0c_fuzzer_nameB\x18\n\x16_fuzzer_log_upload_urlB\x16\n\x14_fuzzer_download_urlB\x18\n\x16_testcase_download_url\")\n\x10\x41nalyzeTaskInput\x12\x15\n\rbad_revisions\x18\x01 \x03(\x03\"P\n\x12SymbolizeTaskInput\x12!\n\x14old_crash_stacktrace\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x17\n\x15_old_crash_stacktrace\"C\n\rBlobUploadUrl\x12\x10\n\x03key\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x03url\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x06\n\x04_keyB\x06\n\x04_url\"\xb9\x03\n\rFuzzTaskInput\x12\'\n\x1asample_testcase_upload_key\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\'\n\x1asample_testcase_upload_url\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\"\n\x15script_log_upload_url\x18\x03 \x01(\tH\x02\x88\x01\x01\x12.\n\x0b\x66uzz_target\x18\x04 \x01(\x0b\x32\x14.google.protobuf.AnyH\x03\x88\x01\x01\x12\x32\n\x06\x63orpus\x18\x05 \x01(\x0b\x32\x1d.uworker_msg.FuzzTargetCorpusH\x04\x88\x01\x01\x12$\n\x1cglobal_blacklisted_functions\x18\x06 \x03(\t\x12\x35\n\x11\x63rash_upload_urls\x18\x07 \x03(\x0b\x32\x1a.uworker_msg.BlobUploadUrlB\x1d\n\x1b_sample_testcase_upload_keyB\x1d\n\x1b_sample_testcase_upload_urlB\x18\n\x16_script_log_upload_urlB\x0e\n\x0c_fuzz_targetB\t\n\x07_corpus\"\x89\x01\n\x10\x44\x61taBundleCorpus\x12.\n\x0b\x64\x61ta_bundle\x18\x01 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x88\x01\x01\x12\x14\n\x07gcs_url\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x13\n\x0b\x63orpus_urls\x18\x03 \x03(\tB\x0e\n\x0c_data_bundleB\n\n\x08_gcs_url\"\x82\x02\n\x10\x46uzzTargetCorpus\x12(\n\x06\x63orpus\x18\x01 \x01(\x0b\x32\x13.uworker_msg.CorpusH\x00\x88\x01\x01\x12\x34\n\x12regressions_corpus\x18\x02 \x01(\x0b\x32\x13.uworker_msg.CorpusH\x01\x88\x01\x01\x12\x13\n\x06\x65ngine\x18\x03 \x01(\tH\x02\x88\x01\x01\x12*\n\x1dproject_qualified_target_name\x18\x04 \x01(\tH\x03\x88\x01\x01\x42\t\n\x07_corpusB\x15\n\x13_regressions_corpusB\t\n\x07_engineB \n\x1e_project_qualified_target_name\"\xfe\x01\n\x06\x43orpus\x12\x38\n\x0b\x63orpus_urls\x18\x01 \x03(\x0b\x32#.uworker_msg.Corpus.CorpusUrlsEntry\x12:\n\x11last_updated_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x88\x01\x01\x12\x14\n\x07gcs_url\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x13\n\x0bupload_urls\x18\x04 \x03(\t\x1a\x31\n\x0f\x43orpusUrlsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x14\n\x12_last_updated_timeB\n\n\x08_gcs_url\"\x92\x02\n\x11MinimizeTaskInput\x12 \n\x13testcase_upload_url\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1f\n\x12testcase_blob_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12!\n\x14stacktrace_blob_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\"\n\x15stacktrace_upload_url\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x11\n\targuments\x18\x05 \x03(\tB\x16\n\x14_testcase_upload_urlB\x15\n\x13_testcase_blob_nameB\x17\n\x15_stacktrace_blob_nameB\x18\n\x16_stacktrace_upload_url\",\n\x13RegressionTaskInput\x12\x15\n\rbad_revisions\x18\x01 \x03(\x03\"\x81\x02\n\x14ProgressionTaskInput\x12\x1a\n\rcustom_binary\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x15\n\rbad_revisions\x18\x02 \x03(\x03\x12$\n\x17regression_testcase_url\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x16\n\tblob_name\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\"\n\x15stacktrace_upload_url\x18\x05 \x01(\tH\x03\x88\x01\x01\x42\x10\n\x0e_custom_binaryB\x1a\n\x18_regression_testcase_urlB\x0c\n\n_blob_nameB\x18\n\x16_stacktrace_upload_url\"\xcb\x01\n\x19\x43rossPollinateFuzzerProto\x12.\n\x0b\x66uzz_target\x18\x01 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x88\x01\x01\x12\x1f\n\x12\x62\x61\x63kup_bucket_name\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1f\n\x12\x63orpus_engine_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x0e\n\x0c_fuzz_targetB\x15\n\x13_backup_bucket_nameB\x15\n\x13_corpus_engine_name\"\xb9\x05\n\x16\x43orpusPruningTaskInput\x12.\n\x0b\x66uzz_target\x18\x01 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x88\x01\x01\x12\"\n\x15last_execution_failed\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12G\n\x17\x63ross_pollinate_fuzzers\x18\x03 \x03(\x0b\x32&.uworker_msg.CrossPollinateFuzzerProto\x12\x32\n\x06\x63orpus\x18\x04 \x01(\x0b\x32\x1d.uworker_msg.FuzzTargetCorpusH\x02\x88\x01\x01\x12=\n\x11quarantine_corpus\x18\x05 \x01(\x0b\x32\x1d.uworker_msg.FuzzTargetCorpusH\x03\x88\x01\x01\x12%\n\x18\x63orpus_crashes_blob_name\x18\x06 \x01(\tH\x04\x88\x01\x01\x12&\n\x19\x63orpus_crashes_upload_url\x18\x07 \x01(\tH\x05\x88\x01\x01\x12!\n\x14\x64\x61ted_backup_gcs_url\x18\x08 \x01(\tH\x06\x88\x01\x01\x12\"\n\x15latest_backup_gcs_url\x18\t \x01(\tH\x07\x88\x01\x01\x12$\n\x17\x64\x61ted_backup_signed_url\x18\n \x01(\tH\x08\x88\x01\x01\x42\x0e\n\x0c_fuzz_targetB\x18\n\x16_last_execution_failedB\t\n\x07_corpusB\x14\n\x12_quarantine_corpusB\x1b\n\x19_corpus_crashes_blob_nameB\x1c\n\x1a_corpus_crashes_upload_urlB\x17\n\x15_dated_backup_gcs_urlB\x18\n\x16_latest_backup_gcs_urlB\x1a\n\x18_dated_backup_signed_url\"\xd3\x0b\n\x05Input\x12+\n\x08testcase\x18\x01 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x88\x01\x01\x12;\n\x18testcase_upload_metadata\x18\x02 \x01(\x0b\x32\x14.google.protobuf.AnyH\x01\x88\x01\x01\x12\x18\n\x0btestcase_id\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x37\n\x0buworker_env\x18\x04 \x03(\x0b\x32\".uworker_msg.Input.UworkerEnvEntry\x12\x15\n\x08job_type\x18\x06 \x01(\tH\x03\x88\x01\x01\x12&\n\x19uworker_output_upload_url\x18\x07 \x01(\tH\x04\x88\x01\x01\x12>\n\x12variant_task_input\x18\x08 \x01(\x0b\x32\x1d.uworker_msg.VariantTaskInputH\x05\x88\x01\x01\x12\x18\n\x0b\x66uzzer_name\x18\t \x01(\tH\x06\x88\x01\x01\x12\x31\n\x0bsetup_input\x18\n \x01(\x0b\x32\x17.uworker_msg.SetupInputH\x07\x88\x01\x01\x12>\n\x12\x61nalyze_task_input\x18\x0b \x01(\x0b\x32\x1d.uworker_msg.AnalyzeTaskInputH\x08\x88\x01\x01\x12K\n\x19\x63orpus_pruning_task_input\x18\x0c \x01(\x0b\x32#.uworker_msg.CorpusPruningTaskInputH\t\x88\x01\x01\x12\x38\n\x0f\x66uzz_task_input\x18\r \x01(\x0b\x32\x1a.uworker_msg.FuzzTaskInputH\n\x88\x01\x01\x12@\n\x13minimize_task_input\x18\x0e \x01(\x0b\x32\x1e.uworker_msg.MinimizeTaskInputH\x0b\x88\x01\x01\x12\x46\n\x16progression_task_input\x18\x0f \x01(\x0b\x32!.uworker_msg.ProgressionTaskInputH\x0c\x88\x01\x01\x12\x44\n\x15regression_task_input\x18\x10 \x01(\x0b\x32 .uworker_msg.RegressionTaskInputH\r\x88\x01\x01\x12\x42\n\x14symbolize_task_input\x18\x11 \x01(\x0b\x32\x1f.uworker_msg.SymbolizeTaskInputH\x0e\x88\x01\x01\x12\x18\n\x0bmodule_name\x18\x12 \x01(\tH\x0f\x88\x01\x01\x12>\n\x15preprocess_start_time\x18\x13 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x10\x88\x01\x01\x12$\n\x1cglobal_blacklisted_functions\x18\x14 \x03(\t\x12.\n\x0b\x66uzz_target\x18\x15 \x01(\x0b\x32\x14.google.protobuf.AnyH\x11\x88\x01\x01\x1a\x31\n\x0fUworkerEnvEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0b\n\t_testcaseB\x1b\n\x19_testcase_upload_metadataB\x0e\n\x0c_testcase_idB\x0b\n\t_job_typeB\x1c\n\x1a_uworker_output_upload_urlB\x15\n\x13_variant_task_inputB\x0e\n\x0c_fuzzer_nameB\x0e\n\x0c_setup_inputB\x15\n\x13_analyze_task_inputB\x1c\n\x1a_corpus_pruning_task_inputB\x12\n\x10_fuzz_task_inputB\x16\n\x14_minimize_task_inputB\x19\n\x17_progression_task_inputB\x18\n\x16_regression_task_inputB\x17\n\x15_symbolize_task_inputB\x0e\n\x0c_module_nameB\x18\n\x16_preprocess_start_timeB\x0e\n\x0c_fuzz_target\"H\n\x10VariantTaskInput\x12\x1e\n\x11original_job_type\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x14\n\x12_original_job_type\"\xc7\x02\n\x13SymbolizeTaskOutput\x12\x17\n\ncrash_type\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rcrash_address\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x63rash_state\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x10\x63rash_stacktrace\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x17\n\nsymbolized\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12\x1b\n\x0e\x63rash_revision\x18\x06 \x01(\x03H\x05\x88\x01\x01\x12\x16\n\tbuild_url\x18\x07 \x01(\tH\x06\x88\x01\x01\x42\r\n\x0b_crash_typeB\x10\n\x0e_crash_addressB\x0e\n\x0c_crash_stateB\x13\n\x11_crash_stacktraceB\r\n\x0b_symbolizedB\x11\n\x0f_crash_revisionB\x0c\n\n_build_url\"\x93\x06\n\x11\x41nalyzeTaskOutput\x12\x1b\n\x0e\x63rash_revision\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12\x1a\n\rabsolute_path\x18\x02 \x01(\tH\x01\x88\x01\x01\x12 \n\x13minimized_arguments\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1d\n\x10\x63rash_stacktrace\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x1b\n\x0e\x63rash_info_set\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12\x16\n\thttp_flag\x18\x06 \x01(\x08H\x05\x88\x01\x01\x12\x17\n\ncrash_type\x18\x07 \x01(\tH\x06\x88\x01\x01\x12\x1a\n\rcrash_address\x18\x08 \x01(\tH\x07\x88\x01\x01\x12\x18\n\x0b\x63rash_state\x18\t \x01(\tH\x08\x88\x01\x01\x12\x1a\n\rsecurity_flag\x18\n \x01(\x08H\t\x88\x01\x01\x12\x1e\n\x11security_severity\x18\x0b \x01(\x05H\n\x88\x01\x01\x12\"\n\x15one_time_crasher_flag\x18\x0c \x01(\x08H\x0b\x88\x01\x01\x12\x16\n\tbuild_key\x18\r \x01(\tH\x0c\x88\x01\x01\x12\x16\n\tbuild_url\x18\x0e \x01(\tH\r\x88\x01\x01\x12\x14\n\x07gn_args\x18\x0f \x01(\tH\x0e\x88\x01\x01\x12\x15\n\x08platform\x18\x10 \x01(\tH\x0f\x88\x01\x01\x12\x18\n\x0bplatform_id\x18\x11 \x01(\tH\x10\x88\x01\x01\x42\x11\n\x0f_crash_revisionB\x10\n\x0e_absolute_pathB\x16\n\x14_minimized_argumentsB\x13\n\x11_crash_stacktraceB\x11\n\x0f_crash_info_setB\x0c\n\n_http_flagB\r\n\x0b_crash_typeB\x10\n\x0e_crash_addressB\x0e\n\x0c_crash_stateB\x10\n\x0e_security_flagB\x14\n\x12_security_severityB\x18\n\x16_one_time_crasher_flagB\x0c\n\n_build_keyB\x0c\n\n_build_urlB\n\n\x08_gn_argsB\x0b\n\t_platformB\x0e\n\x0c_platform_id\"\xd1\x02\n\tCrashInfo\x12\x13\n\x06is_new\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x02 \x01(\x03H\x01\x88\x01\x01\x12\x17\n\ncrash_type\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x18\n\x0b\x63rash_state\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x1a\n\rsecurity_flag\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12\x1a\n\rcrash_address\x18\x07 \x01(\tH\x05\x88\x01\x01\x12\x1d\n\x10\x63rash_stacktrace\x18\x08 \x01(\tH\x06\x88\x01\x01\x12\x16\n\tunit_path\x18\t \x01(\tH\x07\x88\x01\x01\x42\t\n\x07_is_newB\x08\n\x06_countB\r\n\x0b_crash_typeB\x0e\n\x0c_crash_stateB\x10\n\x0e_security_flagB\x10\n\x0e_crash_addressB\x13\n\x11_crash_stacktraceB\x0c\n\n_unit_path\"\xcb\x01\n\x1bStoreFuzzerRunResultsOutput\x12\x1f\n\x12\x66uzzer_return_code\x18\x01 \x01(\x05H\x00\x88\x01\x01\x12&\n\x19generated_testcase_string\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1b\n\x0e\x63onsole_output\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x15\n\x13_fuzzer_return_codeB\x1c\n\x1a_generated_testcase_stringB\x11\n\x0f_console_output\"\xc8\x07\n\rFuzzTaskCrash\x12\x16\n\tfile_path\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x17\n\ncrash_time\x18\x02 \x01(\x02H\x01\x88\x01\x01\x12\x18\n\x0breturn_code\x18\x03 \x01(\x05H\x02\x88\x01\x01\x12\x15\n\rresource_list\x18\x04 \x03(\t\x12\x10\n\x08gestures\x18\x05 \x03(\t\x12\x16\n\targuments\x18\x06 \x01(\tH\x03\x88\x01\x01\x12\x1a\n\x12\x66uzzing_strategies\x18\x07 \x03(\t\x12\x1a\n\rsecurity_flag\x18\x08 \x01(\x08H\x04\x88\x01\x01\x12\x1e\n\x11should_be_ignored\x18\t \x01(\x08H\x05\x88\x01\x01\x12\x16\n\thttp_flag\x18\n \x01(\x08H\x06\x88\x01\x01\x12%\n\x18\x61pplication_command_line\x18\x0b \x01(\tH\x07\x88\x01\x01\x12*\n\x1dunsymbolized_crash_stacktrace\x18\x0c \x01(\tH\x08\x88\x01\x01\x12\x17\n\ncrash_type\x18\r \x01(\tH\t\x88\x01\x01\x12\x1a\n\rcrash_address\x18\x0e \x01(\tH\n\x88\x01\x01\x12\x18\n\x0b\x63rash_state\x18\x0f \x01(\tH\x0b\x88\x01\x01\x12\x1d\n\x10\x63rash_stacktrace\x18\x10 \x01(\tH\x0c\x88\x01\x01\x12\x18\n\x10\x63rash_categories\x18\x11 \x03(\t\x12\x10\n\x03key\x18\x12 \x01(\tH\r\x88\x01\x01\x12\x15\n\x08is_valid\x18\x14 \x01(\x08H\x0e\x88\x01\x01\x12\x17\n\nfuzzed_key\x18\x15 \x01(\tH\x0f\x88\x01\x01\x12\x1a\n\rabsolute_path\x18\x16 \x01(\tH\x10\x88\x01\x01\x12\x1d\n\x10\x61rchive_filename\x18\x17 \x01(\tH\x11\x88\x01\x01\x12\x15\n\x08\x61rchived\x18\x18 \x01(\x08H\x12\x88\x01\x01\x42\x0c\n\n_file_pathB\r\n\x0b_crash_timeB\x0e\n\x0c_return_codeB\x0c\n\n_argumentsB\x10\n\x0e_security_flagB\x14\n\x12_should_be_ignoredB\x0c\n\n_http_flagB\x1b\n\x19_application_command_lineB \n\x1e_unsymbolized_crash_stacktraceB\r\n\x0b_crash_typeB\x10\n\x0e_crash_addressB\x0e\n\x0c_crash_stateB\x13\n\x11_crash_stacktraceB\x06\n\x04_keyB\x0b\n\t_is_validB\r\n\x0b_fuzzed_keyB\x10\n\x0e_absolute_pathB\x13\n\x11_archive_filenameB\x0b\n\t_archived\"\xf1\x02\n\x0b\x46uzzContext\x12\x14\n\x07redzone\x18\x01 \x01(\x05H\x00\x88\x01\x01\x12\x1a\n\rdisable_ubsan\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\x1c\n\x0fwindow_argument\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1f\n\x12timeout_multiplier\x18\x04 \x01(\x02H\x03\x88\x01\x01\x12\x19\n\x0ctest_timeout\x18\x05 \x01(\x05H\x04\x88\x01\x01\x12\x45\n\x0f\x66uzzer_metadata\x18\x06 \x03(\x0b\x32,.uworker_msg.FuzzContext.FuzzerMetadataEntry\x1a\x35\n\x13\x46uzzerMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\n\n\x08_redzoneB\x10\n\x0e_disable_ubsanB\x12\n\x10_window_argumentB\x15\n\x13_timeout_multiplierB\x0f\n\r_test_timeout\"\xff\x01\n\x12\x46uzzTaskCrashGroup\x12.\n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x18.uworker_msg.FuzzContextH\x00\x88\x01\x01\x12+\n\x07\x63rashes\x18\x02 \x03(\x0b\x32\x1a.uworker_msg.FuzzTaskCrash\x12\x33\n\nmain_crash\x18\x03 \x01(\x0b\x32\x1a.uworker_msg.FuzzTaskCrashH\x01\x88\x01\x01\x12\"\n\x15one_time_crasher_flag\x18\x04 \x01(\x08H\x02\x88\x01\x01\x42\n\n\x08_contextB\r\n\x0b_main_crashB\x18\n\x16_one_time_crasher_flag\"\xeb\x04\n\x0e\x46uzzTaskOutput\x12(\n\x1b\x66ully_qualified_fuzzer_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1b\n\x0e\x63rash_revision\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x1e\n\x11job_run_timestamp\x18\x03 \x01(\x02H\x02\x88\x01\x01\x12\x1f\n\x12testcases_executed\x18\x06 \x01(\x03H\x03\x88\x01\x01\x12I\n\x12\x66uzzer_run_results\x18\x08 \x01(\x0b\x32(.uworker_msg.StoreFuzzerRunResultsOutputH\x04\x88\x01\x01\x12\x1e\n\x11new_targets_count\x18\t \x01(\x05H\x05\x88\x01\x01\x12\x1c\n\x0f\x66uzzer_revision\x18\n \x01(\x05H\x06\x88\x01\x01\x12\x14\n\x0c\x66uzz_targets\x18\x0b \x03(\t\x12\x1a\n\x12testcase_run_jsons\x18\x0c \x03(\t\x12\x35\n\x0c\x63rash_groups\x18\r \x03(\x0b\x32\x1f.uworker_msg.FuzzTaskCrashGroup\x12/\n\nbuild_data\x18\x0e \x01(\x0b\x32\x16.uworker_msg.BuildDataH\x07\x88\x01\x01\x42\x1e\n\x1c_fully_qualified_fuzzer_nameB\x11\n\x0f_crash_revisionB\x14\n\x12_job_run_timestampB\x15\n\x13_testcases_executedB\x15\n\x13_fuzzer_run_resultsB\x14\n\x12_new_targets_countB\x12\n\x10_fuzzer_revisionB\r\n\x0b_build_data\"\xef\x05\n\x12MinimizeTaskOutput\x12X\n\x16last_crash_result_dict\x18\x01 \x03(\x0b\x32\x38.uworker_msg.MinimizeTaskOutput.LastCrashResultDictEntry\x12\x18\n\x0b\x66laky_stack\x18\x02 \x01(\x08H\x00\x88\x01\x01\x12&\n\x19security_severity_updated\x18\x03 \x01(\x08H\x01\x88\x01\x01\x12\x1e\n\x11security_severity\x18\x04 \x01(\x05H\x02\x88\x01\x01\x12\x1f\n\x12minimization_phase\x18\x05 \x01(\x05H\x03\x88\x01\x01\x12\x10\n\x08gestures\x18\x06 \x03(\t\x12\x1b\n\x0eminimized_keys\x18\x07 \x01(\tH\x04\x88\x01\x01\x12 \n\x13minimized_arguments\x18\x08 \x01(\tH\x05\x88\x01\x01\x12\x1a\n\rarchive_state\x18\t \x01(\x05H\x06\x88\x01\x01\x12\x1a\n\rabsolute_path\x18\n \x01(\tH\x07\x88\x01\x01\x12S\n\x13memory_tool_options\x18\x0b \x03(\x0b\x32\x36.uworker_msg.MinimizeTaskOutput.MemoryToolOptionsEntry\x1a:\n\x18LastCrashResultDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x38\n\x16MemoryToolOptionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0e\n\x0c_flaky_stackB\x1c\n\x1a_security_severity_updatedB\x14\n\x12_security_severityB\x15\n\x13_minimization_phaseB\x11\n\x0f_minimized_keysB\x16\n\x14_minimized_argumentsB\x10\n\x0e_archive_stateB\x10\n\x0e_absolute_path\"\xfb\x02\n\x14RegressionTaskOutput\x12#\n\x16regression_range_start\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12!\n\x14regression_range_end\x18\x02 \x01(\x03H\x01\x88\x01\x01\x12 \n\x13last_regression_min\x18\x03 \x01(\x03H\x02\x88\x01\x01\x12 \n\x13last_regression_max\x18\x04 \x01(\x03H\x03\x88\x01\x01\x12/\n\x0f\x62uild_data_list\x18\x05 \x03(\x0b\x32\x16.uworker_msg.BuildData\x12%\n\x18is_testcase_reproducible\x18\x06 \x01(\x08H\x04\x88\x01\x01\x42\x19\n\x17_regression_range_startB\x17\n\x15_regression_range_endB\x16\n\x14_last_regression_minB\x16\n\x14_last_regression_maxB\x1b\n\x19_is_testcase_reproducible\"\xa3\x02\n\x11VariantTaskOutput\x12\x13\n\x06status\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12\x15\n\x08revision\x18\x02 \x01(\x03H\x01\x88\x01\x01\x12\x17\n\ncrash_type\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x18\n\x0b\x63rash_state\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x1a\n\rsecurity_flag\x18\x05 \x01(\x08H\x04\x88\x01\x01\x12\x17\n\nis_similar\x18\x06 \x01(\x08H\x05\x88\x01\x01\x12\x15\n\x08platform\x18\x07 \x01(\tH\x06\x88\x01\x01\x42\t\n\x07_statusB\x0b\n\t_revisionB\r\n\x0b_crash_typeB\x0e\n\x0c_crash_stateB\x10\n\x0e_security_flagB\r\n\x0b_is_similarB\x0b\n\t_platform\"\xe7\x01\n\tBuildData\x12\x15\n\x08revision\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12\x19\n\x0cis_bad_build\x18\x02 \x01(\x08H\x01\x88\x01\x01\x12\'\n\x1ashould_ignore_crash_result\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12%\n\x18\x62uild_run_console_output\x18\x04 \x01(\tH\x03\x88\x01\x01\x42\x0b\n\t_revisionB\x0f\n\r_is_bad_buildB\x1d\n\x1b_should_ignore_crash_resultB\x1b\n\x19_build_run_console_output\"\xc8\x04\n\x15ProgressionTaskOutput\x12\x19\n\x0cmin_revision\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12\x19\n\x0cmax_revision\x18\x02 \x01(\x03H\x01\x88\x01\x01\x12\x1c\n\x0f\x63rash_on_latest\x18\x03 \x01(\x08H\x02\x88\x01\x01\x12$\n\x17\x63rash_on_latest_message\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x1b\n\x0e\x63rash_revision\x18\x05 \x01(\x03H\x04\x88\x01\x01\x12)\n\x1clast_tested_crash_stacktrace\x18\x06 \x01(\tH\x05\x88\x01\x01\x12!\n\x14last_progression_min\x18\x07 \x01(\x03H\x06\x88\x01\x01\x12!\n\x14last_progression_max\x18\x08 \x01(\x03H\x07\x88\x01\x01\x12#\n\x16\x63lear_min_max_metadata\x18\t \x01(\x08H\x08\x88\x01\x01\x12/\n\x0f\x62uild_data_list\x18\x0b \x03(\x0b\x32\x16.uworker_msg.BuildDataB\x0f\n\r_min_revisionB\x0f\n\r_max_revisionB\x12\n\x10_crash_on_latestB\x1a\n\x18_crash_on_latest_messageB\x11\n\x0f_crash_revisionB\x1f\n\x1d_last_tested_crash_stacktraceB\x17\n\x15_last_progression_minB\x17\n\x15_last_progression_maxB\x19\n\x17_clear_min_max_metadata\"\xc6\x03\n\x1a\x43rossPollinationStatistics\x12#\n\x16project_qualified_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x14\n\x07sources\x18\x02 \x01(\tH\x01\x88\x01\x01\x12 \n\x13initial_corpus_size\x18\x03 \x01(\x03H\x02\x88\x01\x01\x12\x18\n\x0b\x63orpus_size\x18\x04 \x01(\x03H\x03\x88\x01\x01\x12\"\n\x15initial_edge_coverage\x18\x05 \x01(\x03H\x04\x88\x01\x01\x12\x1a\n\redge_coverage\x18\x06 \x01(\x03H\x05\x88\x01\x01\x12%\n\x18initial_feature_coverage\x18\x07 \x01(\x03H\x06\x88\x01\x01\x12\x1d\n\x10\x66\x65\x61ture_coverage\x18\x08 \x01(\x03H\x07\x88\x01\x01\x42\x19\n\x17_project_qualified_nameB\n\n\x08_sourcesB\x16\n\x14_initial_corpus_sizeB\x0e\n\x0c_corpus_sizeB\x18\n\x16_initial_edge_coverageB\x10\n\x0e_edge_coverageB\x1b\n\x19_initial_feature_coverageB\x13\n\x11_feature_coverage\"\x97\x04\n\x13\x43overageInformation\x12\x19\n\x0cproject_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x32\n\ttimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01\x88\x01\x01\x12\x1e\n\x11\x63orpus_size_units\x18\x03 \x01(\x03H\x02\x88\x01\x01\x12\x1e\n\x11\x63orpus_size_bytes\x18\x04 \x01(\x03H\x03\x88\x01\x01\x12\x1c\n\x0f\x63orpus_location\x18\x05 \x01(\tH\x04\x88\x01\x01\x12#\n\x16\x63orpus_backup_location\x18\x06 \x01(\tH\x05\x88\x01\x01\x12\"\n\x15quarantine_size_units\x18\x07 \x01(\x03H\x06\x88\x01\x01\x12\"\n\x15quarantine_size_bytes\x18\x08 \x01(\x03H\x07\x88\x01\x01\x12 \n\x13quarantine_location\x18\t \x01(\tH\x08\x88\x01\x01\x42\x0f\n\r_project_nameB\x0c\n\n_timestampB\x14\n\x12_corpus_size_unitsB\x14\n\x12_corpus_size_bytesB\x12\n\x10_corpus_locationB\x19\n\x17_corpus_backup_locationB\x18\n\x16_quarantine_size_unitsB\x18\n\x16_quarantine_size_bytesB\x16\n\x14_quarantine_location\"\xa5\x03\n\x17\x43orpusPruningTaskOutput\x12M\n\x17\x63ross_pollination_stats\x18\x01 \x01(\x0b\x32\'.uworker_msg.CrossPollinationStatisticsH\x00\x88\x01\x01\x12<\n\rcoverage_info\x18\x02 \x01(\x0b\x32 .uworker_msg.CoverageInformationH\x01\x88\x01\x01\x12\x1f\n\x12\x66uzzer_binary_name\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x1b\n\x0e\x63rash_revision\x18\x04 \x01(\x03H\x03\x88\x01\x01\x12\'\n\x07\x63rashes\x18\x05 \x03(\x0b\x32\x16.uworker_msg.CrashInfo\x12#\n\x16\x63orpus_backup_uploaded\x18\x06 \x01(\x08H\x04\x88\x01\x01\x42\x1a\n\x18_cross_pollination_statsB\x10\n\x0e_coverage_infoB\x15\n\x13_fuzzer_binary_nameB\x11\n\x0f_crash_revisionB\x19\n\x17_corpus_backup_uploaded\"\xc5\t\n\x06Output\x12/\n\nerror_type\x18\x03 \x01(\x0e\x32\x16.uworker_msg.ErrorTypeH\x00\x88\x01\x01\x12.\n\ruworker_input\x18\x04 \x01(\x0b\x32\x12.uworker_msg.InputH\x01\x88\x01\x01\x12\x19\n\x0ctest_timeout\x18\x05 \x01(\x02H\x02\x88\x01\x01\x12\x17\n\ncrash_time\x18\x06 \x01(\x02H\x03\x88\x01\x01\x12$\n\x17\x63rash_stacktrace_output\x18\x07 \x01(\tH\x04\x88\x01\x01\x12\x15\n\x08\x62ot_name\x18\x12 \x01(\tH\x05\x88\x01\x01\x12\x18\n\x0bplatform_id\x18\x13 \x01(\tH\x06\x88\x01\x01\x12@\n\x13\x61nalyze_task_output\x18\x08 \x01(\x0b\x32\x1e.uworker_msg.AnalyzeTaskOutputH\x07\x88\x01\x01\x12:\n\x10\x66uzz_task_output\x18\t \x01(\x0b\x32\x1b.uworker_msg.FuzzTaskOutputH\x08\x88\x01\x01\x12\x42\n\x14minimize_task_output\x18\n \x01(\x0b\x32\x1f.uworker_msg.MinimizeTaskOutputH\t\x88\x01\x01\x12\x46\n\x16regression_task_output\x18\x0b \x01(\x0b\x32!.uworker_msg.RegressionTaskOutputH\n\x88\x01\x01\x12H\n\x17progression_task_output\x18\x0c \x01(\x0b\x32\".uworker_msg.ProgressionTaskOutputH\x0b\x88\x01\x01\x12\x44\n\x15symbolize_task_output\x18\r \x01(\x0b\x32 .uworker_msg.SymbolizeTaskOutputH\x0c\x88\x01\x01\x12@\n\x13variant_task_output\x18\x0e \x01(\x0b\x32\x1e.uworker_msg.VariantTaskOutputH\r\x88\x01\x01\x12M\n\x1a\x63orpus_pruning_task_output\x18\x10 \x01(\x0b\x32$.uworker_msg.CorpusPruningTaskOutputH\x0e\x88\x01\x01\x12\x1b\n\x0eissue_metadata\x18\x14 \x01(\tH\x0f\x88\x01\x01\x12\x1a\n\rerror_message\x18\x0f \x01(\tH\x10\x88\x01\x01\x42\r\n\x0b_error_typeB\x10\n\x0e_uworker_inputB\x0f\n\r_test_timeoutB\r\n\x0b_crash_timeB\x1a\n\x18_crash_stacktrace_outputB\x0b\n\t_bot_nameB\x0e\n\x0c_platform_idB\x16\n\x14_analyze_task_outputB\x13\n\x11_fuzz_task_outputB\x17\n\x15_minimize_task_outputB\x19\n\x17_regression_task_outputB\x1a\n\x18_progression_task_outputB\x18\n\x16_symbolize_task_outputB\x16\n\x14_variant_task_outputB\x1d\n\x1b_corpus_pruning_task_outputB\x11\n\x0f_issue_metadataB\x10\n\x0e_error_message*\x95\t\n\tErrorType\x12\x0c\n\x08NO_ERROR\x10\x00\x12\x17\n\x13\x41NALYZE_BUILD_SETUP\x10\x01\x12\x14\n\x10\x41NALYZE_NO_CRASH\x10\x02\x12\x1d\n\x19\x41NALYZE_NO_REVISIONS_LIST\x10\x03\x12\x1d\n\x19\x41NALYZE_NO_REVISION_INDEX\x10\x04\x12\x12\n\x0eTESTCASE_SETUP\x10\x05\x12\r\n\tUNHANDLED\x10\x06\x12\x17\n\x13VARIANT_BUILD_SETUP\x10\x07\x12\x12\n\x0eMINIMIZE_SETUP\x10\x08\x12\x1c\n\x18\x46UZZ_BUILD_SETUP_FAILURE\x10\t\x12\"\n\x1e\x46UZZ_DATA_BUNDLE_SETUP_FAILURE\x10\n\x12\x12\n\x0e\x46UZZ_NO_FUZZER\x10\x0b\x12 \n\x1c\x46UZZ_NO_FUZZ_TARGET_SELECTED\x10\r\x12#\n\x1fPROGRESSION_REVISION_LIST_ERROR\x10\x0e\x12\x1f\n\x1bPROGRESSION_BUILD_NOT_FOUND\x10\x0f\x12\x18\n\x14PROGRESSION_NO_CRASH\x10\x10\x12!\n\x1dPROGRESSION_BAD_STATE_MIN_MAX\x10\x11\x12\x17\n\x13PROGRESSION_TIMEOUT\x10\x12\x12\x19\n\x15PROGRESSION_BAD_BUILD\x10\x13\x12!\n\x1dPROGRESSION_BUILD_SETUP_ERROR\x10\x14\x12\"\n\x1eREGRESSION_REVISION_LIST_ERROR\x10\x15\x12\x1e\n\x1aREGRESSION_BUILD_NOT_FOUND\x10\x16\x12 \n\x1cREGRESSION_BUILD_SETUP_ERROR\x10\x17\x12\x1e\n\x1aREGRESSION_BAD_BUILD_ERROR\x10\x18\x12\x17\n\x13REGRESSION_NO_CRASH\x10\x19\x12\x1c\n\x18REGRESSION_TIMEOUT_ERROR\x10\x1a\x12\x31\n-REGRESSION_LOW_CONFIDENCE_IN_REGRESSION_RANGE\x10\x1b\x12\x1f\n\x1bSYMBOLIZE_BUILD_SETUP_ERROR\x10\x1c\x12!\n\x1dMINIMIZE_UNREPRODUCIBLE_CRASH\x10\x1d\x12\x1c\n\x18MINIMIZE_CRASH_TOO_FLAKY\x10\x1e\x12\x1e\n\x1aMINIMIZE_DEADLINE_EXCEEDED\x10\x1f\x12\x31\n-MINIMIZE_DEADLINE_EXCEEDED_IN_MAIN_FILE_PHASE\x10 \x12)\n%LIBFUZZER_MINIMIZATION_UNREPRODUCIBLE\x10!\x12!\n\x1dLIBFUZZER_MINIMIZATION_FAILED\x10\"\x12&\n\"CORPUS_PRUNING_FUZZER_SETUP_FAILED\x10#\x12\x18\n\x14\x43ORPUS_PRUNING_ERROR\x10$\x12\x12\n\x0e\x46UZZ_BAD_BUILD\x10%\x12\"\n\x1e\x41NALYZE_CLOSE_INVALID_UPLOADED\x10&b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -47,8 +47,8 @@ _globals['_MINIMIZETASKOUTPUT_LASTCRASHRESULTDICTENTRY']._serialized_options = b'8\001' _globals['_MINIMIZETASKOUTPUT_MEMORYTOOLOPTIONSENTRY']._options = None _globals['_MINIMIZETASKOUTPUT_MEMORYTOOLOPTIONSENTRY']._serialized_options = b'8\001' - _globals['_ERRORTYPE']._serialized_start=13885 - _globals['_ERRORTYPE']._serialized_end=15058 + _globals['_ERRORTYPE']._serialized_start=13652 + _globals['_ERRORTYPE']._serialized_end=14825 _globals['_SETUPINPUT']._serialized_start=124 _globals['_SETUPINPUT']._serialized_end=513 _globals['_ANALYZETASKINPUT']._serialized_start=515 @@ -99,30 +99,28 @@ _globals['_FUZZCONTEXT_FUZZERMETADATAENTRY']._serialized_end=7785 _globals['_FUZZTASKCRASHGROUP']._serialized_start=7878 _globals['_FUZZTASKCRASHGROUP']._serialized_end=8133 - _globals['_ENGINEOUTPUT']._serialized_start=8136 - _globals['_ENGINEOUTPUT']._serialized_end=8271 - _globals['_FUZZTASKOUTPUT']._serialized_start=8274 - _globals['_FUZZTASKOUTPUT']._serialized_end=8988 - _globals['_MINIMIZETASKOUTPUT']._serialized_start=8991 - _globals['_MINIMIZETASKOUTPUT']._serialized_end=9742 - _globals['_MINIMIZETASKOUTPUT_LASTCRASHRESULTDICTENTRY']._serialized_start=9456 - _globals['_MINIMIZETASKOUTPUT_LASTCRASHRESULTDICTENTRY']._serialized_end=9514 - _globals['_MINIMIZETASKOUTPUT_MEMORYTOOLOPTIONSENTRY']._serialized_start=9516 - _globals['_MINIMIZETASKOUTPUT_MEMORYTOOLOPTIONSENTRY']._serialized_end=9572 - _globals['_REGRESSIONTASKOUTPUT']._serialized_start=9745 - _globals['_REGRESSIONTASKOUTPUT']._serialized_end=10124 - _globals['_VARIANTTASKOUTPUT']._serialized_start=10127 - _globals['_VARIANTTASKOUTPUT']._serialized_end=10418 - _globals['_BUILDDATA']._serialized_start=10421 - _globals['_BUILDDATA']._serialized_end=10652 - _globals['_PROGRESSIONTASKOUTPUT']._serialized_start=10655 - _globals['_PROGRESSIONTASKOUTPUT']._serialized_end=11239 - _globals['_CROSSPOLLINATIONSTATISTICS']._serialized_start=11242 - _globals['_CROSSPOLLINATIONSTATISTICS']._serialized_end=11696 - _globals['_COVERAGEINFORMATION']._serialized_start=11699 - _globals['_COVERAGEINFORMATION']._serialized_end=12234 - _globals['_CORPUSPRUNINGTASKOUTPUT']._serialized_start=12237 - _globals['_CORPUSPRUNINGTASKOUTPUT']._serialized_end=12658 - _globals['_OUTPUT']._serialized_start=12661 - _globals['_OUTPUT']._serialized_end=13882 + _globals['_FUZZTASKOUTPUT']._serialized_start=8136 + _globals['_FUZZTASKOUTPUT']._serialized_end=8755 + _globals['_MINIMIZETASKOUTPUT']._serialized_start=8758 + _globals['_MINIMIZETASKOUTPUT']._serialized_end=9509 + _globals['_MINIMIZETASKOUTPUT_LASTCRASHRESULTDICTENTRY']._serialized_start=9223 + _globals['_MINIMIZETASKOUTPUT_LASTCRASHRESULTDICTENTRY']._serialized_end=9281 + _globals['_MINIMIZETASKOUTPUT_MEMORYTOOLOPTIONSENTRY']._serialized_start=9283 + _globals['_MINIMIZETASKOUTPUT_MEMORYTOOLOPTIONSENTRY']._serialized_end=9339 + _globals['_REGRESSIONTASKOUTPUT']._serialized_start=9512 + _globals['_REGRESSIONTASKOUTPUT']._serialized_end=9891 + _globals['_VARIANTTASKOUTPUT']._serialized_start=9894 + _globals['_VARIANTTASKOUTPUT']._serialized_end=10185 + _globals['_BUILDDATA']._serialized_start=10188 + _globals['_BUILDDATA']._serialized_end=10419 + _globals['_PROGRESSIONTASKOUTPUT']._serialized_start=10422 + _globals['_PROGRESSIONTASKOUTPUT']._serialized_end=11006 + _globals['_CROSSPOLLINATIONSTATISTICS']._serialized_start=11009 + _globals['_CROSSPOLLINATIONSTATISTICS']._serialized_end=11463 + _globals['_COVERAGEINFORMATION']._serialized_start=11466 + _globals['_COVERAGEINFORMATION']._serialized_end=12001 + _globals['_CORPUSPRUNINGTASKOUTPUT']._serialized_start=12004 + _globals['_CORPUSPRUNINGTASKOUTPUT']._serialized_end=12425 + _globals['_OUTPUT']._serialized_start=12428 + _globals['_OUTPUT']._serialized_end=13649 # @@protoc_insertion_point(module_scope) diff --git a/src/clusterfuzz/_internal/protos/uworker_msg_pb2.pyi b/src/clusterfuzz/_internal/protos/uworker_msg_pb2.pyi index 1b81f121ee..782c8f448f 100644 --- a/src/clusterfuzz/_internal/protos/uworker_msg_pb2.pyi +++ b/src/clusterfuzz/_internal/protos/uworker_msg_pb2.pyi @@ -1192,33 +1192,6 @@ class FuzzTaskCrashGroup(google.protobuf.message.Message): global___FuzzTaskCrashGroup = FuzzTaskCrashGroup -@typing_extensions.final -class EngineOutput(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - OUTPUT_FIELD_NUMBER: builtins.int - RETURN_CODE_FIELD_NUMBER: builtins.int - TIMESTAMP_FIELD_NUMBER: builtins.int - output: builtins.bytes - return_code: builtins.int - @property - def timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ... - def __init__( - self, - *, - output: builtins.bytes | None = ..., - return_code: builtins.int | None = ..., - timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ..., - ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["_output", b"_output", "_return_code", b"_return_code", "output", b"output", "return_code", b"return_code", "timestamp", b"timestamp"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["_output", b"_output", "_return_code", b"_return_code", "output", b"output", "return_code", b"return_code", "timestamp", b"timestamp"]) -> None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_output", b"_output"]) -> typing_extensions.Literal["output"] | None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_return_code", b"_return_code"]) -> typing_extensions.Literal["return_code"] | None: ... - -global___EngineOutput = EngineOutput - @typing_extensions.final class FuzzTaskOutput(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1234,8 +1207,6 @@ class FuzzTaskOutput(google.protobuf.message.Message): TESTCASE_RUN_JSONS_FIELD_NUMBER: builtins.int CRASH_GROUPS_FIELD_NUMBER: builtins.int BUILD_DATA_FIELD_NUMBER: builtins.int - APP_REVISION_FIELD_NUMBER: builtins.int - ENGINE_OUTPUTS_FIELD_NUMBER: builtins.int fully_qualified_fuzzer_name: builtins.str """TODO(metzman): Remove this since tworkers should know what this is based on the input. @@ -1255,9 +1226,6 @@ class FuzzTaskOutput(google.protobuf.message.Message): def crash_groups(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___FuzzTaskCrashGroup]: ... @property def build_data(self) -> global___BuildData: ... - app_revision: builtins.int - @property - def engine_outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___EngineOutput]: ... def __init__( self, *, @@ -1272,13 +1240,9 @@ class FuzzTaskOutput(google.protobuf.message.Message): testcase_run_jsons: collections.abc.Iterable[builtins.str] | None = ..., crash_groups: collections.abc.Iterable[global___FuzzTaskCrashGroup] | None = ..., build_data: global___BuildData | None = ..., - app_revision: builtins.int | None = ..., - engine_outputs: collections.abc.Iterable[global___EngineOutput] | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["_app_revision", b"_app_revision", "_build_data", b"_build_data", "_crash_revision", b"_crash_revision", "_fully_qualified_fuzzer_name", b"_fully_qualified_fuzzer_name", "_fuzzer_revision", b"_fuzzer_revision", "_fuzzer_run_results", b"_fuzzer_run_results", "_job_run_timestamp", b"_job_run_timestamp", "_new_targets_count", b"_new_targets_count", "_testcases_executed", b"_testcases_executed", "app_revision", b"app_revision", "build_data", b"build_data", "crash_revision", b"crash_revision", "fully_qualified_fuzzer_name", b"fully_qualified_fuzzer_name", "fuzzer_revision", b"fuzzer_revision", "fuzzer_run_results", b"fuzzer_run_results", "job_run_timestamp", b"job_run_timestamp", "new_targets_count", b"new_targets_count", "testcases_executed", b"testcases_executed"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["_app_revision", b"_app_revision", "_build_data", b"_build_data", "_crash_revision", b"_crash_revision", "_fully_qualified_fuzzer_name", b"_fully_qualified_fuzzer_name", "_fuzzer_revision", b"_fuzzer_revision", "_fuzzer_run_results", b"_fuzzer_run_results", "_job_run_timestamp", b"_job_run_timestamp", "_new_targets_count", b"_new_targets_count", "_testcases_executed", b"_testcases_executed", "app_revision", b"app_revision", "build_data", b"build_data", "crash_groups", b"crash_groups", "crash_revision", b"crash_revision", "engine_outputs", b"engine_outputs", "fully_qualified_fuzzer_name", b"fully_qualified_fuzzer_name", "fuzz_targets", b"fuzz_targets", "fuzzer_revision", b"fuzzer_revision", "fuzzer_run_results", b"fuzzer_run_results", "job_run_timestamp", b"job_run_timestamp", "new_targets_count", b"new_targets_count", "testcase_run_jsons", b"testcase_run_jsons", "testcases_executed", b"testcases_executed"]) -> None: ... - @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_app_revision", b"_app_revision"]) -> typing_extensions.Literal["app_revision"] | None: ... + def HasField(self, field_name: typing_extensions.Literal["_build_data", b"_build_data", "_crash_revision", b"_crash_revision", "_fully_qualified_fuzzer_name", b"_fully_qualified_fuzzer_name", "_fuzzer_revision", b"_fuzzer_revision", "_fuzzer_run_results", b"_fuzzer_run_results", "_job_run_timestamp", b"_job_run_timestamp", "_new_targets_count", b"_new_targets_count", "_testcases_executed", b"_testcases_executed", "build_data", b"build_data", "crash_revision", b"crash_revision", "fully_qualified_fuzzer_name", b"fully_qualified_fuzzer_name", "fuzzer_revision", b"fuzzer_revision", "fuzzer_run_results", b"fuzzer_run_results", "job_run_timestamp", b"job_run_timestamp", "new_targets_count", b"new_targets_count", "testcases_executed", b"testcases_executed"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["_build_data", b"_build_data", "_crash_revision", b"_crash_revision", "_fully_qualified_fuzzer_name", b"_fully_qualified_fuzzer_name", "_fuzzer_revision", b"_fuzzer_revision", "_fuzzer_run_results", b"_fuzzer_run_results", "_job_run_timestamp", b"_job_run_timestamp", "_new_targets_count", b"_new_targets_count", "_testcases_executed", b"_testcases_executed", "build_data", b"build_data", "crash_groups", b"crash_groups", "crash_revision", b"crash_revision", "fully_qualified_fuzzer_name", b"fully_qualified_fuzzer_name", "fuzz_targets", b"fuzz_targets", "fuzzer_revision", b"fuzzer_revision", "fuzzer_run_results", b"fuzzer_run_results", "job_run_timestamp", b"job_run_timestamp", "new_targets_count", b"new_targets_count", "testcase_run_jsons", b"testcase_run_jsons", "testcases_executed", b"testcases_executed"]) -> None: ... @typing.overload def WhichOneof(self, oneof_group: typing_extensions.Literal["_build_data", b"_build_data"]) -> typing_extensions.Literal["build_data"] | None: ... @typing.overload diff --git a/src/clusterfuzz/_internal/tests/core/bot/tasks/utasks/fuzz_task_test.py b/src/clusterfuzz/_internal/tests/core/bot/tasks/utasks/fuzz_task_test.py index 9ed4ea7f00..37f5112a2e 100644 --- a/src/clusterfuzz/_internal/tests/core/bot/tasks/utasks/fuzz_task_test.py +++ b/src/clusterfuzz/_internal/tests/core/bot/tasks/utasks/fuzz_task_test.py @@ -1251,6 +1251,7 @@ def setUp(self): 'clusterfuzz._internal.bot.tasks.utasks.fuzz_task.GcsCorpus.sync_from_gcs', 'clusterfuzz._internal.bot.tasks.utasks.fuzz_task.GcsCorpus.upload_files', 'clusterfuzz._internal.build_management.revisions.get_component_list', + 'clusterfuzz._internal.bot.testcase_manager.upload_log', 'clusterfuzz._internal.bot.testcase_manager.upload_testcase', 'clusterfuzz._internal.google_cloud_utils.storage.list_blobs', 'clusterfuzz._internal.google_cloud_utils.storage.get_arbitrary_signed_upload_urls', @@ -1304,7 +1305,6 @@ def test_basic(self): os.environ['APP_REVISION'] = '1' os.environ['FUZZ_TEST_TIMEOUT'] = '2000' os.environ['BOT_NAME'] = 'hostname.company.com' - os.environ['FUZZ_LOGS_BUCKET'] = '/fuzz-logs' expected_crashes = [engine.Crash('/input', 'stack', ['args'], 1.0)] @@ -1336,6 +1336,14 @@ def test_basic(self): }, fuzzer_metadata) log_time = datetime.datetime(1970, 1, 1, 0, 0) + log_call = mock.call( + b'Component revisions (build r1):\n' + b'component: rev\n\nBot name: hostname.company.com\n' + b'Return code: 1\n\n' + b'Command: cmd\nTime ran: 42.0\n\n' + b'logs\n' + b'cf::fuzzing_strategies: strategy_1:1,strategy_2:50', log_time) + self.mock.upload_log.assert_has_calls([log_call, log_call]) self.mock.upload_testcase.assert_has_calls([ mock.call('/input', log_time), mock.call('/input', log_time), diff --git a/src/clusterfuzz/_internal/tests/core/bot/testcase_manager_test.py b/src/clusterfuzz/_internal/tests/core/bot/testcase_manager_test.py index 74b2616188..eb225b80d7 100644 --- a/src/clusterfuzz/_internal/tests/core/bot/testcase_manager_test.py +++ b/src/clusterfuzz/_internal/tests/core/bot/testcase_manager_test.py @@ -124,9 +124,10 @@ def test_upload_with_timestamp_from_stats(self): crash_result = CrashResult( return_code=1, crash_time=5, output='fake output') + log = testcase_manager.prepare_log_for_upload(crash_result.get_stacktrace(), + crash_result.return_code) log_time = testcase_manager._get_testcase_time(self.testcase_path) - testcase_manager.upload_log(crash_result.get_stacktrace(), - crash_result.return_code, log_time) + testcase_manager.upload_log(log, log_time) # Date and time below is derived from 1472846341 timestamp value. self.mock.write_data.assert_called_once_with( @@ -148,9 +149,10 @@ def test_upload_with_hostname(self): '"fuzzer": "fuzzer", "build_revision": 123}\n') crash_result = CrashResult(return_code=None, crash_time=None, output=None) + log = testcase_manager.prepare_log_for_upload(crash_result.get_stacktrace(), + crash_result.return_code) log_time = testcase_manager._get_testcase_time(self.testcase_path) - testcase_manager.upload_log(crash_result.get_stacktrace(), - crash_result.return_code, log_time) + testcase_manager.upload_log(log, log_time) self.mock.write_data.assert_called_once_with( b'Component revisions (build r123):\n' b'Component: REVISION\nComponent2: REVISION2\n\n' @@ -172,9 +174,10 @@ def test_upload_with_hostname_and_serial(self): '"fuzzer": "fuzzer", "build_revision": 123}\n') crash_result = CrashResult(return_code=None, crash_time=None, output=None) + log = testcase_manager.prepare_log_for_upload(crash_result.get_stacktrace(), + crash_result.return_code) log_time = testcase_manager._get_testcase_time(self.testcase_path) - testcase_manager.upload_log(crash_result.get_stacktrace(), - crash_result.return_code, log_time) + testcase_manager.upload_log(log, log_time) self.mock.write_data.assert_called_once_with( b'Component revisions (build r123):\n' b'Component: REVISION\nComponent2: REVISION2\n\n' @@ -195,9 +198,10 @@ def test_upload_without_timestamp(self): environment.set_value('BOT_NAME', 'hostname.company.com') crash_result = CrashResult(return_code=None, crash_time=None, output=None) + log = testcase_manager.prepare_log_for_upload(crash_result.get_stacktrace(), + crash_result.return_code) log_time = testcase_manager._get_testcase_time(self.testcase_path) - testcase_manager.upload_log(crash_result.get_stacktrace(), - crash_result.return_code, log_time) + testcase_manager.upload_log(log, log_time) self.mock.write_data.assert_called_once_with( b'Component revisions (build r123):\n' b'Component: REVISION\nComponent2: REVISION2\n\n' @@ -221,9 +225,10 @@ def test_upload_without_component_revisions(self): environment.set_value('BOT_NAME', 'hostname.company.com') crash_result = CrashResult( return_code=1, crash_time=5, output='fake output') + log = testcase_manager.prepare_log_for_upload(crash_result.get_stacktrace(), + crash_result.return_code) log_time = testcase_manager._get_testcase_time(self.testcase_path) - testcase_manager.upload_log(crash_result.get_stacktrace(), - crash_result.return_code, log_time) + testcase_manager.upload_log(log, log_time) # Date and time below is derived from 1472846341 timestamp value. self.mock.write_data.assert_called_once_with( diff --git a/src/clusterfuzz/_internal/tests/core/bot/untrusted_runner/untrusted_runner_integration_test.py b/src/clusterfuzz/_internal/tests/core/bot/untrusted_runner/untrusted_runner_integration_test.py index df28ac2612..ff7c42d89a 100644 --- a/src/clusterfuzz/_internal/tests/core/bot/untrusted_runner/untrusted_runner_integration_test.py +++ b/src/clusterfuzz/_internal/tests/core/bot/untrusted_runner/untrusted_runner_integration_test.py @@ -540,7 +540,7 @@ def test_update_data_bundle(self): setup.update_data_bundle(returned_fuzzer, data_bundle_corpus)) data_bundle_directory = file_host.rebase_to_worker_root( - setup._get_data_bundle_directory(returned_fuzzer, bundle)) # pylint: disable=protected-access + setup.get_data_bundle_directory(returned_fuzzer, bundle)) self.assertTrue(os.path.exists(os.path.join(data_bundle_directory, 'a'))) self.assertTrue(os.path.exists(os.path.join(data_bundle_directory, 'b')))