Skip to content

Commit b2f87ff

Browse files
authored
Fix recent FuzzBench cloud experiment failures (#2023)
1. Fix `TypeError: expected str, bytes or os.PathLike object, not NoneType` in [`2024-08-10-test`](#2020 (comment)). ```python Traceback (most recent call last): File "/src/experiment/runner.py", line 468, in experiment_main runner.conduct_trial() File "/src/experiment/runner.py", line 290, in conduct_trial self.set_up_corpus_directories() File "/src/experiment/runner.py", line 275, in set_up_corpus_directories _unpack_clusterfuzz_seed_corpus(target_binary, input_corpus) File "/src/experiment/runner.py", line 144, in _unpack_clusterfuzz_seed_corpus seed_corpus_archive_path = get_clusterfuzz_seed_corpus_path( File "/src/experiment/runner.py", line 98, in get_clusterfuzz_seed_corpus_path fuzz_target_without_extension = os.path.splitext(fuzz_target_path)[0] File "/usr/local/lib/python3.10/posixpath.py", line 118, in splitext p = os.fspath(p) TypeError: expected str, bytes or os.PathLike object, not NoneType ``` This happens on [many benchmarks+fuzzers](https://pantheon.corp.google.com/logs/query;query=%222024-08-10-test%22%0Aseverity%3E%3DERROR%0A--Hide%20similar%20entries%0A-%2528jsonPayload.message%3D~%22Error%20watching%20metadata:%20context%20canceled%22%2529%0A--End%20of%20hide%20similar%20entries;cursorTimestamp=2024-08-10T11:04:34.735815901Z;duration=P7D?project=fuzzbench&mods=logs_tg_prod). To be investigated later: 1. Why `fuzz_target_path` is `None`. 2. Why this did not happen in other recent experiments. 3. I thought I had seen this a long ago, Déjà vu? 2. Fixing `No such file or directory: '/work/measurement-folders/<benchmark>-<fuzzer>/merged.json`: ```python Traceback (most recent call last): File "/work/src/experiment/measurer/coverage_utils.py", line 74, in generate_coverage_report coverage_reporter.generate_coverage_summary_json() File "/work/src/experiment/measurer/coverage_utils.py", line 141, in generate_coverage_summary_json result = generate_json_summary(coverage_binary, File "/work/src/experiment/measurer/coverage_utils.py", line 269, in generate_json_summary with open(output_file, 'w', encoding='utf-8') as dst_file: FileNotFoundError: [Errno 2] No such file or directory: '/work/measurement-folders/lcms_cms_transform_fuzzer-centipede/merged.json' ``` 3. Remove incompatible benchmarks: `openh264_decoder_fuzzer`, `stb_stbi_read_fuzzer`
1 parent d8a7723 commit b2f87ff

File tree

2 files changed

+4
-0
lines changed

2 files changed

+4
-0
lines changed

experiment/measurer/coverage_utils.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,8 @@ def generate_json_summary(coverage_binary,
276276

277277
if summary_only:
278278
command.append('-summary-only')
279+
# Ensure the directory exists, creating it if necessary
280+
os.makedirs(os.path.dirname(output_file), exist_ok=True)
279281

280282
with open(output_file, 'w', encoding='utf-8') as dst_file:
281283
result = new_process.execute(command,

experiment/runner.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ def _clean_seed_corpus(seed_corpus_dir):
9595
def get_clusterfuzz_seed_corpus_path(fuzz_target_path):
9696
"""Returns the path of the clusterfuzz seed corpus archive if one exists.
9797
Otherwise returns None."""
98+
if not fuzz_target_path:
99+
return None
98100
fuzz_target_without_extension = os.path.splitext(fuzz_target_path)[0]
99101
seed_corpus_path = (fuzz_target_without_extension +
100102
SEED_CORPUS_ARCHIVE_SUFFIX)

0 commit comments

Comments
 (0)