From fa737eeb2d47b7fbda68b9d53f5a8ef6f96de59e Mon Sep 17 00:00:00 2001 From: Vitor Guidi Date: Wed, 23 Oct 2024 21:47:53 +0000 Subject: [PATCH 1/2] Tracking fuzz time on engine fuzzers --- .../_internal/bot/tasks/utasks/fuzz_task.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/clusterfuzz/_internal/bot/tasks/utasks/fuzz_task.py b/src/clusterfuzz/_internal/bot/tasks/utasks/fuzz_task.py index 3e5d4e5c5f..444fec5f72 100644 --- a/src/clusterfuzz/_internal/bot/tasks/utasks/fuzz_task.py +++ b/src/clusterfuzz/_internal/bot/tasks/utasks/fuzz_task.py @@ -1495,9 +1495,13 @@ def do_engine_fuzzing(self, engine_impl): for fuzzing_round in range(environment.get_value('MAX_TESTCASES', 1)): logs.info(f'Fuzzing round {fuzzing_round}.') try: - result, current_fuzzer_metadata, fuzzing_strategies = run_engine_fuzzer( - engine_impl, self.fuzz_target.binary, sync_corpus_directory, - self.testcase_directory) + with _TrackFuzzTime(self.fully_qualified_fuzzer_name, + self.job_type) as tracker: + result, current_fuzzer_metadata, fuzzing_strategies = run_engine_fuzzer( + engine_impl, self.fuzz_target.binary, sync_corpus_directory, + self.testcase_directory) + # Timeouts are only accounted for in libfuzzer, this can be None + tracker.timeout = True if result.timed_out else False except FuzzTargetNotFoundError: # Ocassionally fuzz targets are deleted. This is pretty rare. Since # ClusterFuzz did nothing wrong, don't bubble up an exception, consider From 58c4de5e488ca1a612970bc57ccef280316b6e60 Mon Sep 17 00:00:00 2001 From: Vitor Guidi Date: Wed, 23 Oct 2024 22:02:17 +0000 Subject: [PATCH 2/2] Fix lint --- .../_internal/bot/tasks/utasks/fuzz_task.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/clusterfuzz/_internal/bot/tasks/utasks/fuzz_task.py b/src/clusterfuzz/_internal/bot/tasks/utasks/fuzz_task.py index 444fec5f72..cb7f050398 100644 --- a/src/clusterfuzz/_internal/bot/tasks/utasks/fuzz_task.py +++ b/src/clusterfuzz/_internal/bot/tasks/utasks/fuzz_task.py @@ -1496,12 +1496,12 @@ def do_engine_fuzzing(self, engine_impl): logs.info(f'Fuzzing round {fuzzing_round}.') try: with _TrackFuzzTime(self.fully_qualified_fuzzer_name, - self.job_type) as tracker: - result, current_fuzzer_metadata, fuzzing_strategies = run_engine_fuzzer( + self.job_type) as tracker: + result, cur_fuzzer_metadata, fuzzing_strategies = run_engine_fuzzer( engine_impl, self.fuzz_target.binary, sync_corpus_directory, self.testcase_directory) # Timeouts are only accounted for in libfuzzer, this can be None - tracker.timeout = True if result.timed_out else False + tracker.timeout = bool(result.timed_out) except FuzzTargetNotFoundError: # Ocassionally fuzz targets are deleted. This is pretty rare. Since # ClusterFuzz did nothing wrong, don't bubble up an exception, consider @@ -1511,7 +1511,7 @@ def do_engine_fuzzing(self, engine_impl): logs.error(f'{self.fuzz_target.binary} is not in the build.') return [], {} - fuzzer_metadata.update(current_fuzzer_metadata) + fuzzer_metadata.update(cur_fuzzer_metadata) # Prepare stats. testcase_run = engine_common.get_testcase_run(result.stats, @@ -2049,8 +2049,7 @@ def _to_engine_output(output: str, return_code: int, def _upload_engine_output_log(engine_output): timestamp = uworker_io.proto_timestamp_to_timestamp(engine_output.timestamp) testcase_manager.upload_log(engine_output.output.decode(), - engine_output.return_code, - timestamp) + engine_output.return_code, timestamp) def utask_postprocess(output):