Skip to content

Add a system to determine what a Fossilize bucket corresponds to - #308

Merged
HansKristian-Work merged 5 commits into
masterfrom
bucket-json-system
Jul 30, 2026
Merged

Add a system to determine what a Fossilize bucket corresponds to#308
HansKristian-Work merged 5 commits into
masterfrom
bucket-json-system

Conversation

@HansKristian-Work

Copy link
Copy Markdown
Collaborator

For future captures, a bucket.json is dumped alongside a bucket folder to make it possible to tie a bucket hash with a configuration.

For existing captures, a python script is added that can reverse a bucket.json file based on the filter.json and some a-priori knowledge about DXVK and vkd3d-proton.

@HansKristian-Work
HansKristian-Work merged commit 0ae323c into master Jul 30, 2026
@HansKristian-Work
HansKristian-Work deleted the bucket-json-system branch July 30, 2026 13:05
@louzt

louzt commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

nice additions! dumping bucket.json alongside the capture folder makes inspecting pipeline configs trivial, and bucket-reverse.py is a super clean approach to reverse those 64-bit hashes across multi-vendor setups.

solid QoL update for debugging captures. updating my edge builds with this, thanks for deep dive onto those topics Hans!

HansKristian-Work pushed a commit that referenced this pull request Aug 5, 2026
PR #308 (bucket-json-system, merged via 0ae323c) added
RESOURCE_BUCKET_INFO = 10 to the ResourceTag enum but did not
extend cli/fossilize_list.cpp's tag_names[] array. As a result:

  - fossilize-list --help listed 0..9 only, hiding tag 10.
  - fossilize-list --tag 10 (RESOURCE_COUNT=11, so the guard
    tag_uint >= RESOURCE_COUNT accepts it) failed with a generic
    'Failed to get hashes' log instead of listing tag 10.
  - fossilize-list --connectivity on a .foz containing
    RESOURCE_BUCKET_INFO entries hit an out-of-bounds read at
    tag_names[par.first] when par.first == 10.

Fix by appending 'bucketInfo' to tag_names[] and adding a
static_assert that sizeof(tag_names)/sizeof(tag_names[0]) ==
RESOURCE_COUNT. The static_assert catches the same class of
drift that e4ec0c1 (2025-11-10) fixed for computePipeline, so
this regression cannot recur silently.

This complements PR #308 without touching database storage,
the replayer, or PR #310 (roundtrip-checker, still Draft).

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

Labels

None yet

2 participants