This doesn’t mean mask is non-zero if non-empty, if that is the goal. Also, if it isn’t, IntSan will notify about it:
0echo 'AQAAAID+/v7+/v7+/n8=' | base64 --decode > /tmp/f.crash
1
2UBSAN_OPTIONS="suppressions=$(pwd)/test/sanitizer_suppressions/ubsan:print_stacktrace=1:halt_on_error=1:report_error_type=1" FUZZ=clusterlin_ancestor_finder ./bld/bin/fuzz -runs=1 /tmp/f.crash
0INFO: Running with entropic power schedule (0xFF, 100).
1INFO: Seed: 1905069321
2INFO: Loaded 1 modules (588821 inline 8-bit counters): 588821 [0x595f7228d4c8, 0x595f7231d0dd),
3INFO: Loaded 1 PC tables (588821 PCs): 588821 [0x595f7231d0e0,0x595f72c19230),
4./bld/bin/fuzz: Running 1 inputs 1 time(s) each.
5Running: /tmp/f.crash
6/root/fuzz_dir_yosan/scratch/fuzz_gen/code/src/test/fuzz/cluster_linearize.cpp:307:10: runtime error: unsigned integer overflow: 18446744073709551615 + 1 cannot be represented in type 'uint64_t' (aka 'unsigned long')
7 [#0](/bitcoin-bitcoin/0/) 0x595f6f1275b0 in bitset_detail::IntBitSet<unsigned int> (anonymous namespace)::ReadTopologicalSet<bitset_detail::IntBitSet<unsigned int>>(cluster_linearize::DepGraph<bitset_detail::IntBitSet<unsigned int>> const&, bitset_detail::IntBitSet<unsigned int> const&, SpanReader&, bool) /root/fuzz_dir_yosan/scratch/fuzz_gen/code/bld/src/test/fuzz/./test/fuzz/cluster_linearize.cpp:307:10
8 [#1](/bitcoin-bitcoin/1/) 0x595f6f1258e7 in clusterlin_ancestor_finder_fuzz_target(std::span<unsigned char const, 18446744073709551615ul>) /root/fuzz_dir_yosan/scratch/fuzz_gen/code/bld/src/test/fuzz/./test/fuzz/cluster_linearize.cpp:758:24
9 [#2](/bitcoin-bitcoin/2/) 0x595f6f79af21 in std::function<void (std::span<unsigned char const, 18446744073709551615ul>)>::operator()(std::span<unsigned char const, 18446744073709551615ul>) const /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_function.h:591:9
10 [#3](/bitcoin-bitcoin/3/) 0x595f6f79af21 in test_one_input(std::span<unsigned char const, 18446744073709551615ul>) /root/fuzz_dir_yosan/scratch/fuzz_gen/code/bld/src/test/fuzz/util/./test/fuzz/fuzz.cpp:88:5
11 [#4](/bitcoin-bitcoin/4/) 0x595f6f79af21 in LLVMFuzzerTestOneInput /root/fuzz_dir_yosan/scratch/fuzz_gen/code/bld/src/test/fuzz/util/./test/fuzz/fuzz.cpp:216:5
12 [#5](/bitcoin-bitcoin/5/) 0x595f6ee6d9ef in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) (/root/fuzz_dir_yosan/scratch/fuzz_gen/code/bld/bin/fuzz+0x1a749ef) (BuildId: f97b222457dad4832e8ea607046fa79bfdcf7f64)
13 [#6](/bitcoin-bitcoin/6/) 0x595f6ee554a3 in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) (/root/fuzz_dir_yosan/scratch/fuzz_gen/code/bld/bin/fuzz+0x1a5c4a3) (BuildId: f97b222457dad4832e8ea607046fa79bfdcf7f64)
14 [#7](/bitcoin-bitcoin/7/) 0x595f6ee5b761 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) (/root/fuzz_dir_yosan/scratch/fuzz_gen/code/bld/bin/fuzz+0x1a62761) (BuildId: f97b222457dad4832e8ea607046fa79bfdcf7f64)
15 [#8](/bitcoin-bitcoin/8/) 0x595f6ee87ca6 in main (/root/fuzz_dir_yosan/scratch/fuzz_gen/code/bld/bin/fuzz+0x1a8eca6) (BuildId: f97b222457dad4832e8ea607046fa79bfdcf7f64)
16 [#9](/bitcoin-bitcoin/9/) 0x7fe88682a1c9 (/lib/x86_64-linux-gnu/libc.so.6+0x2a1c9) (BuildId: 282c2c16e7b6600b0b22ea0c99010d2795752b5f)
17 [#10](/bitcoin-bitcoin/10/) 0x7fe88682a28a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2a28a) (BuildId: 282c2c16e7b6600b0b22ea0c99010d2795752b5f)
18 [#11](/bitcoin-bitcoin/11/) 0x595f6ee4fe94 in _start (/root/fuzz_dir_yosan/scratch/fuzz_gen/code/bld/bin/fuzz+0x1a56e94) (BuildId: f97b222457dad4832e8ea607046fa79bfdcf7f64)
19
20SUMMARY: UndefinedBehaviorSanitizer: unsigned-integer-overflow /root/fuzz_dir_yosan/scratch/fuzz_gen/code/src/test/fuzz/cluster_linearize.cpp:307:10