Skip to content

Conversation

@letitz
Copy link
Collaborator

@letitz letitz commented Jan 27, 2026

Opening on behalf of @mverde to start reviewing early.

Copy link
Collaborator Author

@letitz letitz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First round. I'm excited to see this land!

Copy link
Collaborator Author

@letitz letitz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Smaller comments this time around, except that we still need tests :)

to_extract = [f.name for f in to_extract]
self.assertCountEqual(to_extract, needed_files)

@parameterized.parameterized.expand(['/b/build/', 'build/', ''])
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why delete this test?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah sorry, this is actually something I meant to ask about but forgot over the weekend... this test seems exactly the same as the test that proceeds it other than in name. Do you happen to know if the test case is still relevant?

return self._archive_schema_version
def __init__(self,
reader: archive.ArchiveReader,
archive_schema_version: int = 0):
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given that this is only used if the archive is missing, let's call it default_archive_schema_version.

Also, let's document this method:

def __init__(self, ...):
  """Initializes a `ChromiumBuildArchive` with the given reader.

  Arguments:
    reader: See `DefaultBuildArchive`.
    default_archive_schema_version: Specifies which version of a build archive to
      expect if `clusterfuzz_manifest.json` is missing or badly formatted.
  """


Expects a manifest file named `clusterfuzz_manifest.json` in the root of the
archive to decide which schema version to use when interpreting its contents.
The legacy schema is applied to archives with no manifest.
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should document what the legacy schema is, and what version 1 looks like.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done. Does this look good to you?

Comment on lines +208 to +209
'swiftshader/libGLESv2.so',
'instrumented_libraries/msan/lib/libgcrypt.so.11.8.2',
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In real .runtime_deps files, I would expect the reference to e.g. libgcrypt.so to be prefixed with ../../. Can you look at such a file in a ClusterFuzz build to see what it looks like?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here's an example:

./zucchini_patch_fuzzer
zucchini_patch_fuzzer.owners
../../testing/test_env.py
../../testing/xvfb.py
../../testing/scripts/common.py
../../.vpython3
../../build/util/lib/init.py
../../build/util/lib/proto/
../../.vpython3
../../build/util/lib/init.py
../../build/util/lib/results/
./libbase.so
../../tools/valgrind/asan/
../../third_party/llvm-build/Release+Asserts/bin/llvm-symbolizer
./libbase_allocator_partition_allocator_src_partition_alloc_raw_ptr.so
./libbase_allocator_partition_allocator_src_partition_alloc_allocator_base.so
../../tools/valgrind/asan/
../../third_party/llvm-build/Release+Asserts/bin/llvm-symbolizer
../../tools/memory/sanitizer/escalate_sanitizer_warnings.py
../../third_party/instrumented_libs/binaries/msan-chained-origins-noble-lib/lib
third_party/instrumented_libs/binaries/msan-chained-origins-noble-lib/lib/ld-linux-x86-64.so.2
./libc++.so
./libatomic.so
./libbase_allocator_partition_allocator_src_partition_alloc_allocator_core.so
./libbase_allocator_partition_allocator_src_partition_alloc_allocator_shim.so
./libthird_party_abseil-cpp_absl.so
./libthird_party_boringssl.so
./libthird_party_perfetto_libperfetto.so
./libchrome_zlib.so
./libthird_party_icu_icui18n.so
./libicuuc.so
icudtl.dat
bin/run_zucchini_patch_fuzzer
../../.vpython3
../../testing/location_tags.json

The answer seems to be that some are prefixed with relative separators and some are not.

@cemon721-a11y
Copy link

cemon721-a11y commented Jan 30, 2026 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants