|
|
|
# -fsanitize=undefined suppressions
|
|
|
|
# =================================
|
|
|
|
# This would be `signed-integer-overflow:CTxMemPool::PrioritiseTransaction`,
|
|
|
|
# however due to a bug in clang the symbolizer is disabled and thus no symbol
|
|
|
|
# names can be used.
|
|
|
|
# See https://github.com/google/sanitizers/issues/1364
|
|
|
|
signed-integer-overflow:txmempool.cpp
|
|
|
|
|
|
|
|
# -fsanitize=integer suppressions
|
|
|
|
# ===============================
|
|
|
|
# Unsigned integer overflow occurs when the result of an unsigned integer
|
|
|
|
# computation cannot be represented in its type. Unlike signed integer overflow,
|
|
|
|
# this is not undefined behavior, but it is often unintentional. The list below
|
|
|
|
# contains files in which we expect unsigned integer overflows to occur. The
|
|
|
|
# list is used to suppress -fsanitize=integer warnings when running our CI UBSan
|
|
|
|
# job.
|
|
|
|
unsigned-integer-overflow:*/include/c++/
|
|
|
|
unsigned-integer-overflow:addrman.cpp
|
|
|
|
unsigned-integer-overflow:arith_uint256.h
|
|
|
|
unsigned-integer-overflow:basic_string.h
|
|
|
|
unsigned-integer-overflow:bench/bench.h
|
|
|
|
unsigned-integer-overflow:bitcoin-tx.cpp
|
|
|
|
unsigned-integer-overflow:bloom.cpp
|
|
|
|
unsigned-integer-overflow:chain.cpp
|
|
|
|
unsigned-integer-overflow:chain.h
|
|
|
|
unsigned-integer-overflow:coded_stream.h
|
|
|
|
unsigned-integer-overflow:coins.cpp
|
|
|
|
unsigned-integer-overflow:compressor.cpp
|
|
|
|
unsigned-integer-overflow:core_write.cpp
|
|
|
|
unsigned-integer-overflow:crypto/
|
|
|
|
# unsigned-integer-overflow in FuzzedDataProvider's ConsumeIntegralInRange
|
|
|
|
unsigned-integer-overflow:FuzzedDataProvider.h
|
|
|
|
unsigned-integer-overflow:hash.cpp
|
|
|
|
unsigned-integer-overflow:leveldb/
|
|
|
|
unsigned-integer-overflow:policy/fees.cpp
|
|
|
|
unsigned-integer-overflow:prevector.h
|
|
|
|
unsigned-integer-overflow:pubkey.h
|
|
|
|
unsigned-integer-overflow:script/interpreter.cpp
|
|
|
|
unsigned-integer-overflow:stl_bvector.h
|
|
|
|
unsigned-integer-overflow:txmempool.cpp
|
|
|
|
unsigned-integer-overflow:util/strencodings.cpp
|
|
|
|
unsigned-integer-overflow:validation.cpp
|
|
|
|
implicit-integer-sign-change:*/include/boost/
|
|
|
|
implicit-integer-sign-change:*/include/c++/
|
|
|
|
implicit-integer-sign-change:*/new_allocator.h
|
|
|
|
implicit-integer-sign-change:addrman.h
|
|
|
|
implicit-integer-sign-change:arith_uint256.cpp
|
|
|
|
implicit-integer-sign-change:bech32.cpp
|
|
|
|
implicit-integer-sign-change:bloom.cpp
|
|
|
|
implicit-integer-sign-change:chain.cpp
|
|
|
|
implicit-integer-sign-change:chain.h
|
|
|
|
implicit-integer-sign-change:coins.h
|
|
|
|
implicit-integer-sign-change:compat/stdin.cpp
|
|
|
|
implicit-integer-sign-change:compressor.h
|
|
|
|
implicit-integer-sign-change:crc32c/
|
|
|
|
implicit-integer-sign-change:crypto/
|
|
|
|
# implicit-integer-sign-change in FuzzedDataProvider's ConsumeIntegralInRange
|
|
|
|
implicit-integer-sign-change:FuzzedDataProvider.h
|
|
|
|
implicit-integer-sign-change:key.cpp
|
|
|
|
implicit-integer-sign-change:noui.cpp
|
|
|
|
implicit-integer-sign-change:policy/fees.cpp
|
|
|
|
implicit-integer-sign-change:prevector.h
|
|
|
|
implicit-integer-sign-change:protocol.cpp
|
|
|
|
implicit-integer-sign-change:script/bitcoinconsensus.cpp
|
|
|
|
implicit-integer-sign-change:script/interpreter.cpp
|
|
|
|
implicit-integer-sign-change:serialize.h
|
|
|
|
implicit-integer-sign-change:test/arith_uint256_tests.cpp
|
|
|
|
implicit-integer-sign-change:test/coins_tests.cpp
|
|
|
|
implicit-integer-sign-change:test/pow_tests.cpp
|
|
|
|
implicit-integer-sign-change:test/prevector_tests.cpp
|
|
|
|
implicit-integer-sign-change:test/sighash_tests.cpp
|
|
|
|
implicit-integer-sign-change:test/skiplist_tests.cpp
|
|
|
|
implicit-integer-sign-change:test/streams_tests.cpp
|
|
|
|
implicit-integer-sign-change:test/transaction_tests.cpp
|
|
|
|
implicit-integer-sign-change:txmempool.cpp
|
|
|
|
implicit-integer-sign-change:util/strencodings.cpp
|
|
|
|
implicit-integer-sign-change:util/strencodings.h
|
|
|
|
implicit-integer-sign-change:validation.cpp
|
|
|
|
implicit-integer-sign-change:zmq/zmqpublishnotifier.cpp
|
|
|
|
implicit-signed-integer-truncation,implicit-integer-sign-change:chain.h
|
|
|
|
implicit-signed-integer-truncation,implicit-integer-sign-change:test/skiplist_tests.cpp
|
|
|
|
implicit-signed-integer-truncation:addrman.cpp
|
|
|
|
implicit-signed-integer-truncation:addrman.h
|
|
|
|
implicit-signed-integer-truncation:chain.h
|
|
|
|
implicit-signed-integer-truncation:crypto/
|
|
|
|
implicit-signed-integer-truncation:cuckoocache.h
|
|
|
|
implicit-signed-integer-truncation:leveldb/
|
|
|
|
implicit-signed-integer-truncation:net.cpp
|
|
|
|
implicit-signed-integer-truncation:net_processing.cpp
|
|
|
|
implicit-signed-integer-truncation:streams.h
|
|
|
|
implicit-signed-integer-truncation:test/arith_uint256_tests.cpp
|
|
|
|
implicit-signed-integer-truncation:test/skiplist_tests.cpp
|
|
|
|
implicit-signed-integer-truncation:torcontrol.cpp
|
|
|
|
implicit-unsigned-integer-truncation:*/include/c++/
|
|
|
|
implicit-unsigned-integer-truncation:crypto/
|
|
|
|
implicit-unsigned-integer-truncation:leveldb/
|
|
|
|
# std::variant warning fixed in https://github.com/gcc-mirror/gcc/commit/074436cf8cdd2a9ce75cadd36deb8301f00e55b9
|
|
|
|
implicit-unsigned-integer-truncation:std::__detail::__variant::_Variant_storage
|
test: Add missing shift-base:nanobench.h suppression
Otherwise it is not possible to run bench_bitcoin with clang-12 + ASAN
compiled.
Output:
$ src/bench/bench_bitcoin
bench/nanobench.h:1107:15: runtime error: left shift of 4982565676696827473 by 27 places cannot be represented in type 'uint64_t' (aka 'unsigned long')
#0 0x5623d6a13137 in ankerl::nanobench::Rng::rotl(unsigned long, unsigned int) /bitcoin/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/./bench/nanobench.h:1107:15
#1 0x5623d6a13137 in ankerl::nanobench::Rng::operator()() /bitcoin/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/./bench/nanobench.h:1075:10
#2 0x5623d6a05c5b in ankerl::nanobench::Rng::Rng(unsigned long) /bitcoin/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/./bench/nanobench.h:3135:9
#3 0x5623d6a0ca51 in ankerl::nanobench::detail::IterationLogic::Impl::Impl(ankerl::nanobench::Bench const&) /bitcoin/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/./bench/nanobench.h:2206:13
#4 0x5623d69f8f73 in ankerl::nanobench::detail::IterationLogic::IterationLogic(ankerl::nanobench::Bench const&) /bitcoin/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/./bench/nanobench.h:2215:18
#5 0x5623d690f165 in ankerl::nanobench::Bench& ankerl::nanobench::Bench::run<AddrManAdd(ankerl::nanobench::Bench&)::$_0>(AddrManAdd(ankerl::nanobench::Bench&)::$_0&&) /bitcoin/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/./bench/nanobench.h:1114:28
#6 0x5623d690e26e in AddrManAdd(ankerl::nanobench::Bench&) /bitcoin/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/bench/addrman.cpp:76:11
#7 0x5623d69279d6 in void std::__invoke_impl<void, void (*&)(ankerl::nanobench::Bench&), ankerl::nanobench::Bench&>(std::__invoke_other, void (*&)(ankerl::nanobench::Bench&), ankerl::nanobench::Bench&) /usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/invoke.h:60:14
#8 0x5623d6927921 in std::enable_if<is_invocable_r_v<void, void (*&)(ankerl::nanobench::Bench&), ankerl::nanobench::Bench&>, void>::type std::__invoke_r<void, void (*&)(ankerl::nanobench::Bench&), ankerl::nanobench::Bench&>(void (*&)(ankerl::nanobench::Bench&), ankerl::nanobench::Bench&) /usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/invoke.h:110:2
#9 0x5623d692775f in std::_Function_handler<void (ankerl::nanobench::Bench&), void (*)(ankerl::nanobench::Bench&)>::_M_invoke(std::_Any_data const&, ankerl::nanobench::Bench&) /usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/std_function.h:291:9
#10 0x5623d692dbd5 in std::function<void (ankerl::nanobench::Bench&)>::operator()(ankerl::nanobench::Bench&) const /usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/std_function.h:622:14
#11 0x5623d692cd44 in benchmark::BenchRunner::RunAll(benchmark::Args const&) /bitcoin/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/bench/bench.cpp:65:13
#12 0x5623d69282bf in main /bitcoin/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/bench/bench_bitcoin.cpp:63:5
#13 0x7f6812010564 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x28564)
#14 0x5623d685f4dd in _start (/bitcoin/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/src/bench/bench_bitcoin+0x13754dd)
SUMMARY: UndefinedBehaviorSanitizer: invalid-shift-base bench/nanobench.h:1107:15 in
$ clang --version
Ubuntu clang version 12.0.0-1ubuntu1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
4 years ago
|
|
|
shift-base:nanobench.h
|
|
|
|
shift-base:*/include/c++/
|
|
|
|
shift-base:arith_uint256.cpp
|
|
|
|
shift-base:crypto/
|
|
|
|
shift-base:hash.cpp
|
|
|
|
shift-base:leveldb/
|
|
|
|
shift-base:net_processing.cpp
|
|
|
|
shift-base:streams.h
|
|
|
|
shift-base:util/bip32.cpp
|