/bitcoin/src/util/check.h
Line | Count | Source |
1 | | // Copyright (c) 2019-present The Bitcoin Core developers |
2 | | // Distributed under the MIT software license, see the accompanying |
3 | | // file COPYING or http://www.opensource.org/licenses/mit-license.php. |
4 | | |
5 | | #ifndef BITCOIN_UTIL_CHECK_H |
6 | | #define BITCOIN_UTIL_CHECK_H |
7 | | |
8 | | #include <attributes.h> |
9 | | |
10 | | #include <atomic> |
11 | | // We use `util/check.h` to provide the `assert()` macro |
12 | | // to ensure that `NDEBUG` is not defined. |
13 | | #include <cassert> // IWYU pragma: export |
14 | | #include <source_location> |
15 | | #include <stdexcept> |
16 | | #include <string> |
17 | | #include <string_view> |
18 | | #include <type_traits> |
19 | | #include <utility> |
20 | | |
21 | | constexpr bool G_FUZZING_BUILD{ |
22 | | #ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION |
23 | | true |
24 | | #else |
25 | | false |
26 | | #endif |
27 | | }; |
28 | | constexpr bool G_ABORT_ON_FAILED_ASSUME{G_FUZZING_BUILD || |
29 | | #ifdef ABORT_ON_FAILED_ASSUME |
30 | | true |
31 | | #else |
32 | | false |
33 | | #endif |
34 | | }; |
35 | | |
36 | | extern std::atomic<bool> g_enable_dynamic_fuzz_determinism; |
37 | | |
38 | | inline bool EnableFuzzDeterminism() |
39 | 0 | { |
40 | 0 | if constexpr (G_FUZZING_BUILD) { |
41 | 0 | return true; |
42 | | } else if constexpr (!G_ABORT_ON_FAILED_ASSUME) { |
43 | | // Running fuzz tests is always disabled if Assume() doesn't abort |
44 | | // (ie, non-fuzz non-debug builds), as otherwise tests which |
45 | | // should fail due to a failing Assume may still pass. As such, |
46 | | // we also statically disable fuzz determinism in that case. |
47 | | return false; |
48 | | } else { |
49 | | return g_enable_dynamic_fuzz_determinism; |
50 | | } |
51 | 0 | } |
52 | | |
53 | | extern bool g_detail_test_only_CheckFailuresAreExceptionsNotAborts; |
54 | | struct test_only_CheckFailuresAreExceptionsNotAborts { |
55 | 0 | test_only_CheckFailuresAreExceptionsNotAborts() { g_detail_test_only_CheckFailuresAreExceptionsNotAborts = true; }; |
56 | 0 | ~test_only_CheckFailuresAreExceptionsNotAborts() { g_detail_test_only_CheckFailuresAreExceptionsNotAborts = false; }; |
57 | | }; |
58 | | |
59 | | std::string StrFormatInternalBug(std::string_view msg, const std::source_location& loc); |
60 | | |
61 | | class NonFatalCheckError : public std::runtime_error |
62 | | { |
63 | | public: |
64 | | NonFatalCheckError(std::string_view msg, const std::source_location& loc); |
65 | | }; |
66 | | |
67 | | /** Internal helper */ |
68 | | void assertion_fail(const std::source_location& loc, std::string_view assertion); |
69 | | |
70 | | /** Helper for CHECK_NONFATAL() */ |
71 | | template <typename T> |
72 | | T&& inline_check_non_fatal(LIFETIMEBOUND T&& val, const std::source_location& loc, std::string_view assertion) |
73 | 12.7k | { |
74 | 12.7k | if (!val) { Branch (74:9): [True: 0, False: 12.1k]
Branch (74:9): [True: 0, False: 0]
Branch (74:9): [True: 0, False: 0]
Branch (74:9): [True: 0, False: 0]
Branch (74:9): [True: 0, False: 0]
Branch (74:9): [True: 0, False: 0]
Branch (74:9): [True: 0, False: 0]
Branch (74:9): [True: 0, False: 0]
Branch (74:9): [True: 0, False: 304]
Branch (74:9): [True: 0, False: 0]
Branch (74:9): [True: 0, False: 0]
Branch (74:9): [True: 0, False: 0]
Branch (74:9): [True: 0, False: 0]
Branch (74:9): [True: 0, False: 0]
Branch (74:9): [True: 0, False: 0]
Branch (74:9): [True: 0, False: 0]
Branch (74:9): [True: 0, False: 0]
Branch (74:9): [True: 0, False: 0]
Branch (74:9): [True: 0, False: 0]
Branch (74:9): [True: 0, False: 305]
Branch (74:9): [True: 0, False: 0]
Branch (74:9): [True: 0, False: 0]
Branch (74:9): [True: 0, False: 0]
Branch (74:9): [True: 0, False: 0]
Branch (74:9): [True: 0, False: 0]
Branch (74:9): [True: 0, False: 0]
|
75 | 0 | if constexpr (G_ABORT_ON_FAILED_ASSUME) { |
76 | 0 | assertion_fail(loc, assertion); |
77 | 0 | } |
78 | 0 | throw NonFatalCheckError{assertion, loc}; |
79 | 0 | } |
80 | 12.7k | return std::forward<T>(val); |
81 | 12.7k | } bool&& inline_check_non_fatal<bool>(bool&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Line | Count | Source | 73 | 12.1k | { | 74 | 12.1k | if (!val) { Branch (74:9): [True: 0, False: 12.1k]
| 75 | 0 | if constexpr (G_ABORT_ON_FAILED_ASSUME) { | 76 | 0 | assertion_fail(loc, assertion); | 77 | 0 | } | 78 | 0 | throw NonFatalCheckError{assertion, loc}; | 79 | 0 | } | 80 | 12.1k | return std::forward<T>(val); | 81 | 12.1k | } |
Unexecuted instantiation: CBlockIndex const*&& inline_check_non_fatal<CBlockIndex const*>(CBlockIndex const*&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: CBlockIndex const*& inline_check_non_fatal<CBlockIndex const*&>(CBlockIndex const*&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::unique_ptr<CCoinsViewCursor, std::default_delete<CCoinsViewCursor> >&& inline_check_non_fatal<std::unique_ptr<CCoinsViewCursor, std::default_delete<CCoinsViewCursor> > >(std::unique_ptr<CCoinsViewCursor, std::default_delete<CCoinsViewCursor> >&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: node::BlockManager*&& inline_check_non_fatal<node::BlockManager*>(node::BlockManager*&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::shared_ptr<CTransaction const>&& inline_check_non_fatal<std::shared_ptr<CTransaction const> >(std::shared_ptr<CTransaction const>&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: CBlockIndex*& inline_check_non_fatal<CBlockIndex*&>(CBlockIndex*&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::optional<interfaces::BlockRef>&& inline_check_non_fatal<std::optional<interfaces::BlockRef> >(std::optional<interfaces::BlockRef>&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) std::unique_ptr<ValidationSignals, std::default_delete<ValidationSignals> >& inline_check_non_fatal<std::unique_ptr<ValidationSignals, std::default_delete<ValidationSignals> >&>(std::unique_ptr<ValidationSignals, std::default_delete<ValidationSignals> >&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Line | Count | Source | 73 | 304 | { | 74 | 304 | if (!val) { Branch (74:9): [True: 0, False: 304]
| 75 | 0 | if constexpr (G_ABORT_ON_FAILED_ASSUME) { | 76 | 0 | assertion_fail(loc, assertion); | 77 | 0 | } | 78 | 0 | throw NonFatalCheckError{assertion, loc}; | 79 | 0 | } | 80 | 304 | return std::forward<T>(val); | 81 | 304 | } |
Unexecuted instantiation: CBlockIndex*&& inline_check_non_fatal<CBlockIndex*>(CBlockIndex*&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: CBlockIndex* const& inline_check_non_fatal<CBlockIndex* const&>(CBlockIndex* const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::unique_ptr<node::Warnings, std::default_delete<node::Warnings> >& inline_check_non_fatal<std::unique_ptr<node::Warnings, std::default_delete<node::Warnings> >&>(std::unique_ptr<node::Warnings, std::default_delete<node::Warnings> >&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::optional<kernel::CCoinsStats>& inline_check_non_fatal<std::optional<kernel::CCoinsStats>&>(std::optional<kernel::CCoinsStats>&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: ValidationSignals* const& inline_check_non_fatal<ValidationSignals* const&>(ValidationSignals* const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::unique_ptr<ValidationSignals, std::default_delete<ValidationSignals> > const& inline_check_non_fatal<std::unique_ptr<ValidationSignals, std::default_delete<ValidationSignals> > const&>(std::unique_ptr<ValidationSignals, std::default_delete<ValidationSignals> > const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::optional<CFeeRate> const& inline_check_non_fatal<std::optional<CFeeRate> const&>(std::optional<CFeeRate> const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::unique_ptr<interfaces::BlockTemplate, std::default_delete<interfaces::BlockTemplate> >& inline_check_non_fatal<std::unique_ptr<interfaces::BlockTemplate, std::default_delete<interfaces::BlockTemplate> >&>(std::unique_ptr<interfaces::BlockTemplate, std::default_delete<interfaces::BlockTemplate> >&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::unique_ptr<CScheduler, std::default_delete<CScheduler> > const& inline_check_non_fatal<std::unique_ptr<CScheduler, std::default_delete<CScheduler> > const&>(std::unique_ptr<CScheduler, std::default_delete<CScheduler> > const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::optional<CMutableTransaction>&& inline_check_non_fatal<std::optional<CMutableTransaction> >(std::optional<CMutableTransaction>&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) std::function<bool ()>& inline_check_non_fatal<std::function<bool ()>&>(std::function<bool ()>&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Line | Count | Source | 73 | 305 | { | 74 | 305 | if (!val) { Branch (74:9): [True: 0, False: 305]
| 75 | 0 | if constexpr (G_ABORT_ON_FAILED_ASSUME) { | 76 | 0 | assertion_fail(loc, assertion); | 77 | 0 | } | 78 | 0 | throw NonFatalCheckError{assertion, loc}; | 79 | 0 | } | 80 | 305 | return std::forward<T>(val); | 81 | 305 | } |
Unexecuted instantiation: bool& inline_check_non_fatal<bool&>(bool&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: wallet::DescriptorScriptPubKeyMan*& inline_check_non_fatal<wallet::DescriptorScriptPubKeyMan*&>(wallet::DescriptorScriptPubKeyMan*&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: JSONRPCRequest const*& inline_check_non_fatal<JSONRPCRequest const*&>(JSONRPCRequest const*&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: UniValue const*& inline_check_non_fatal<UniValue const*&>(UniValue const*&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::optional<arith_uint256>&& inline_check_non_fatal<std::optional<arith_uint256> >(std::optional<arith_uint256>&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: bool const& inline_check_non_fatal<bool const&>(bool const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) |
82 | | |
83 | | #if defined(NDEBUG) |
84 | | #error "Cannot compile without assertions!" |
85 | | #endif |
86 | | |
87 | | /** Helper for Assert()/Assume() */ |
88 | | template <bool IS_ASSERT, typename T> |
89 | | constexpr T&& inline_assertion_check(LIFETIMEBOUND T&& val, [[maybe_unused]] const std::source_location& loc, [[maybe_unused]] std::string_view assertion) |
90 | 40.9k | { |
91 | 40.9k | if (IS_ASSERT || std::is_constant_evaluated() || G_ABORT_ON_FAILED_ASSUME) { Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
|
92 | 40.9k | if (!val) { Branch (92:13): [True: 0, False: 305]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 16.5k]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 305]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 1.83k]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 14.0k]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 610]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 3.66k]
Branch (92:13): [True: 0, False: 3.66k]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
Branch (92:13): [True: 0, False: 0]
|
93 | 0 | assertion_fail(loc, assertion); |
94 | 0 | } |
95 | 40.9k | } |
96 | 40.9k | return std::forward<T>(val); |
97 | 40.9k | } ArgsManager*& inline_assertion_check<true, ArgsManager*&>(ArgsManager*&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Line | Count | Source | 90 | 305 | { | 91 | 305 | if (IS_ASSERT || std::is_constant_evaluated() || G_ABORT_ON_FAILED_ASSUME) { Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
| 92 | 305 | if (!val) { Branch (92:13): [True: 0, False: 305]
| 93 | 0 | assertion_fail(loc, assertion); | 94 | 0 | } | 95 | 305 | } | 96 | 305 | return std::forward<T>(val); | 97 | 305 | } |
Unexecuted instantiation: util::SignalInterrupt*& inline_assertion_check<true, util::SignalInterrupt*&>(util::SignalInterrupt*&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) bool&& inline_assertion_check<false, bool>(bool&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Line | Count | Source | 90 | 16.5k | { | 91 | 16.5k | if (IS_ASSERT || std::is_constant_evaluated() || G_ABORT_ON_FAILED_ASSUME) { Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
| 92 | 16.5k | if (!val) { Branch (92:13): [True: 0, False: 16.5k]
| 93 | 0 | assertion_fail(loc, assertion); | 94 | 0 | } | 95 | 16.5k | } | 96 | 16.5k | return std::forward<T>(val); | 97 | 16.5k | } |
Unexecuted instantiation: std::optional<util::SignalInterrupt>& inline_assertion_check<true, std::optional<util::SignalInterrupt>&>(std::optional<util::SignalInterrupt>&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::function<bool ()>& inline_assertion_check<true, std::function<bool ()>&>(std::function<bool ()>&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::unique_ptr<node::Warnings, std::default_delete<node::Warnings> >& inline_assertion_check<true, std::unique_ptr<node::Warnings, std::default_delete<node::Warnings> >&>(std::unique_ptr<node::Warnings, std::default_delete<node::Warnings> >&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: util::Result<void>&& inline_assertion_check<true, util::Result<void> >(util::Result<void>&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: bool&& inline_assertion_check<true, bool>(bool&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: util::Result<node::BlockCreateOptions>& inline_assertion_check<true, util::Result<node::BlockCreateOptions>&>(util::Result<node::BlockCreateOptions>&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) std::unique_ptr<ValidationSignals, std::default_delete<ValidationSignals> >& inline_assertion_check<true, std::unique_ptr<ValidationSignals, std::default_delete<ValidationSignals> >&>(std::unique_ptr<ValidationSignals, std::default_delete<ValidationSignals> >&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Line | Count | Source | 90 | 305 | { | 91 | 305 | if (IS_ASSERT || std::is_constant_evaluated() || G_ABORT_ON_FAILED_ASSUME) { Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
| 92 | 305 | if (!val) { Branch (92:13): [True: 0, False: 305]
| 93 | 0 | assertion_fail(loc, assertion); | 94 | 0 | } | 95 | 305 | } | 96 | 305 | return std::forward<T>(val); | 97 | 305 | } |
Unexecuted instantiation: CTxMemPool*&& inline_assertion_check<true, CTxMemPool*>(CTxMemPool*&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) std::unique_ptr<ChainstateManager, std::default_delete<ChainstateManager> >& inline_assertion_check<true, std::unique_ptr<ChainstateManager, std::default_delete<ChainstateManager> >&>(std::unique_ptr<ChainstateManager, std::default_delete<ChainstateManager> >&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Line | Count | Source | 90 | 1.83k | { | 91 | 1.83k | if (IS_ASSERT || std::is_constant_evaluated() || G_ABORT_ON_FAILED_ASSUME) { Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
| 92 | 1.83k | if (!val) { Branch (92:13): [True: 0, False: 1.83k]
| 93 | 0 | assertion_fail(loc, assertion); | 94 | 0 | } | 95 | 1.83k | } | 96 | 1.83k | return std::forward<T>(val); | 97 | 1.83k | } |
Unexecuted instantiation: std::unique_ptr<node::KernelNotifications, std::default_delete<node::KernelNotifications> >& inline_assertion_check<true, std::unique_ptr<node::KernelNotifications, std::default_delete<node::KernelNotifications> >&>(std::unique_ptr<node::KernelNotifications, std::default_delete<node::KernelNotifications> >&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: CBlockIndex*&& inline_assertion_check<true, CBlockIndex*>(CBlockIndex*&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: CBlockIndex const*& inline_assertion_check<true, CBlockIndex const*&>(CBlockIndex const*&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) std::unique_ptr<LevelDBContext, std::default_delete<LevelDBContext> > const& inline_assertion_check<true, std::unique_ptr<LevelDBContext, std::default_delete<LevelDBContext> > const&>(std::unique_ptr<LevelDBContext, std::default_delete<LevelDBContext> > const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Line | Count | Source | 90 | 14.0k | { | 91 | 14.0k | if (IS_ASSERT || std::is_constant_evaluated() || G_ABORT_ON_FAILED_ASSUME) { Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
| 92 | 14.0k | if (!val) { Branch (92:13): [True: 0, False: 14.0k]
| 93 | 0 | assertion_fail(loc, assertion); | 94 | 0 | } | 95 | 14.0k | } | 96 | 14.0k | return std::forward<T>(val); | 97 | 14.0k | } |
Unexecuted instantiation: int&& inline_assertion_check<false, int>(int&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) unsigned char const& inline_assertion_check<false, unsigned char const&>(unsigned char const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Line | Count | Source | 90 | 610 | { | 91 | 610 | if (IS_ASSERT || std::is_constant_evaluated() || G_ABORT_ON_FAILED_ASSUME) { Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
| 92 | 610 | if (!val) { Branch (92:13): [True: 0, False: 610]
| 93 | 0 | assertion_fail(loc, assertion); | 94 | 0 | } | 95 | 610 | } | 96 | 610 | return std::forward<T>(val); | 97 | 610 | } |
Unexecuted instantiation: CCoinsView*& inline_assertion_check<true, CCoinsView*&>(CCoinsView*&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) std::unique_ptr<CoinsViews, std::default_delete<CoinsViews> >& inline_assertion_check<true, std::unique_ptr<CoinsViews, std::default_delete<CoinsViews> >&>(std::unique_ptr<CoinsViews, std::default_delete<CoinsViews> >&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Line | Count | Source | 90 | 3.66k | { | 91 | 3.66k | if (IS_ASSERT || std::is_constant_evaluated() || G_ABORT_ON_FAILED_ASSUME) { Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
| 92 | 3.66k | if (!val) { Branch (92:13): [True: 0, False: 3.66k]
| 93 | 0 | assertion_fail(loc, assertion); | 94 | 0 | } | 95 | 3.66k | } | 96 | 3.66k | return std::forward<T>(val); | 97 | 3.66k | } |
std::unique_ptr<CCoinsViewCache, std::default_delete<CCoinsViewCache> >& inline_assertion_check<true, std::unique_ptr<CCoinsViewCache, std::default_delete<CCoinsViewCache> >&>(std::unique_ptr<CCoinsViewCache, std::default_delete<CCoinsViewCache> >&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Line | Count | Source | 90 | 3.66k | { | 91 | 3.66k | if (IS_ASSERT || std::is_constant_evaluated() || G_ABORT_ON_FAILED_ASSUME) { Branch (91:9): [Folded - Ignored]
Branch (91:22): [Folded - Ignored]
Branch (91:54): [Folded - Ignored]
| 92 | 3.66k | if (!val) { Branch (92:13): [True: 0, False: 3.66k]
| 93 | 0 | assertion_fail(loc, assertion); | 94 | 0 | } | 95 | 3.66k | } | 96 | 3.66k | return std::forward<T>(val); | 97 | 3.66k | } |
Unexecuted instantiation: std::optional<arith_uint256> const& inline_assertion_check<true, std::optional<arith_uint256> const&>(std::optional<arith_uint256> const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::optional<uint256> const& inline_assertion_check<true, std::optional<uint256> const&>(std::optional<uint256> const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: ThreadPool::SubmitError*&& inline_assertion_check<true, ThreadPool::SubmitError*>(ThreadPool::SubmitError*&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*&& inline_assertion_check<true, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*&& inline_assertion_check<true, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const*&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: uint256 const* const& inline_assertion_check<true, uint256 const* const&>(uint256 const* const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: CBlockUndo const* const& inline_assertion_check<true, CBlockUndo const* const&>(CBlockUndo const* const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: CBlock const* const& inline_assertion_check<true, CBlock const* const&>(CBlock const* const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::optional<uint256>&& inline_assertion_check<true, std::optional<uint256> >(std::optional<uint256>&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: CBlockIndex*& inline_assertion_check<true, CBlockIndex*&>(CBlockIndex*&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: bool& inline_assertion_check<false, bool&>(bool&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: net_processing.cpp:(anonymous namespace)::CNodeState*&& inline_assertion_check<true, (anonymous namespace)::CNodeState*>((anonymous namespace)::CNodeState*&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: net_processing.cpp:std::shared_ptr<(anonymous namespace)::Peer>&& inline_assertion_check<true, std::shared_ptr<(anonymous namespace)::Peer> >(std::shared_ptr<(anonymous namespace)::Peer>&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: CBlockIndex*&& inline_assertion_check<false, CBlockIndex*>(CBlockIndex*&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::optional<PresaltedSipHasher>& inline_assertion_check<true, std::optional<PresaltedSipHasher>&>(std::optional<PresaltedSipHasher>&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::optional<AssumeutxoData> const& inline_assertion_check<true, std::optional<AssumeutxoData> const&>(std::optional<AssumeutxoData> const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::optional<node::BlockfileCursor>& inline_assertion_check<true, std::optional<node::BlockfileCursor>&>(std::optional<node::BlockfileCursor>&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::unique_ptr<node::KernelNotifications, std::default_delete<node::KernelNotifications> > const& inline_assertion_check<true, std::unique_ptr<node::KernelNotifications, std::default_delete<node::KernelNotifications> > const&>(std::unique_ptr<node::KernelNotifications, std::default_delete<node::KernelNotifications> > const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: util::SignalInterrupt* const& inline_assertion_check<true, util::SignalInterrupt* const&>(util::SignalInterrupt* const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: node::NodeContext*& inline_assertion_check<true, node::NodeContext*&>(node::NodeContext*&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: node::NodeContext*&& inline_assertion_check<true, node::NodeContext*>(node::NodeContext*&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: interfaces::WalletLoader*& inline_assertion_check<true, interfaces::WalletLoader*&>(interfaces::WalletLoader*&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::unique_ptr<ChainstateManager, std::default_delete<ChainstateManager> > const& inline_assertion_check<true, std::unique_ptr<ChainstateManager, std::default_delete<ChainstateManager> > const&>(std::unique_ptr<ChainstateManager, std::default_delete<ChainstateManager> > const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::optional<unsigned long> const& inline_assertion_check<true, std::optional<unsigned long> const&>(std::optional<unsigned long> const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::optional<uint256> const& inline_assertion_check<false, std::optional<uint256> const&>(std::optional<uint256> const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::optional<uint256>&& inline_assertion_check<false, std::optional<uint256> >(std::optional<uint256>&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: CBlockIndex const*&& inline_assertion_check<true, CBlockIndex const*>(CBlockIndex const*&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: bool const& inline_assertion_check<false, bool const&>(bool const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: CTxMemPoolEntry const*&& inline_assertion_check<true, CTxMemPoolEntry const*>(CTxMemPoolEntry const*&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: node::ReadRawError const*&& inline_assertion_check<true, node::ReadRawError const*>(node::ReadRawError const*&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: unsigned int&& inline_assertion_check<false, unsigned int>(unsigned int&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: unsigned long& inline_assertion_check<false, unsigned long&>(unsigned long&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: TxGraph::Ref const*& inline_assertion_check<false, TxGraph::Ref const*&>(TxGraph::Ref const*&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: txgraph.cpp:(anonymous namespace)::Cluster*& inline_assertion_check<false, (anonymous namespace)::Cluster*&>((anonymous namespace)::Cluster*&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: unsigned long const& inline_assertion_check<false, unsigned long const&>(unsigned long const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::unique_ptr<CTxMemPool::ChangeSet, std::default_delete<CTxMemPool::ChangeSet> >& inline_assertion_check<false, std::unique_ptr<CTxMemPool::ChangeSet, std::default_delete<CTxMemPool::ChangeSet> >&>(std::unique_ptr<CTxMemPool::ChangeSet, std::default_delete<CTxMemPool::ChangeSet> >&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::shared_ptr<CBlock const>& inline_assertion_check<true, std::shared_ptr<CBlock const>&>(std::shared_ptr<CBlock const>&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: uint256 const*& inline_assertion_check<true, uint256 const*&>(uint256 const*&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::optional<int> const& inline_assertion_check<true, std::optional<int> const&>(std::optional<int> const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: CBlockIndex* const& inline_assertion_check<false, CBlockIndex* const&>(CBlockIndex* const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: Chainstate*&& inline_assertion_check<true, Chainstate*>(Chainstate*&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::unique_ptr<Chainstate, std::default_delete<Chainstate> >&& inline_assertion_check<true, std::unique_ptr<Chainstate, std::default_delete<Chainstate> > >(std::unique_ptr<Chainstate, std::default_delete<Chainstate> >&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::unique_ptr<util::TaskRunnerInterface, std::default_delete<util::TaskRunnerInterface> >& inline_assertion_check<true, std::unique_ptr<util::TaskRunnerInterface, std::default_delete<util::TaskRunnerInterface> >&>(std::unique_ptr<util::TaskRunnerInterface, std::default_delete<util::TaskRunnerInterface> >&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: CScheduler*& inline_assertion_check<true, CScheduler*&>(CScheduler*&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: wallet::CWalletTx const*&& inline_assertion_check<true, wallet::CWalletTx const*>(wallet::CWalletTx const*&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::optional<long> const& inline_assertion_check<true, std::optional<long> const&>(std::optional<long> const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: unsigned long&& inline_assertion_check<true, unsigned long>(unsigned long&&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: ArgsManager* const& inline_assertion_check<true, ArgsManager* const&>(ArgsManager* const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: wallet::LegacyDataSPKM*& inline_assertion_check<false, wallet::LegacyDataSPKM*&>(wallet::LegacyDataSPKM*&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::unique_ptr<wallet::SQliteExecHandler, std::default_delete<wallet::SQliteExecHandler> >& inline_assertion_check<true, std::unique_ptr<wallet::SQliteExecHandler, std::default_delete<wallet::SQliteExecHandler> >&>(std::unique_ptr<wallet::SQliteExecHandler, std::default_delete<wallet::SQliteExecHandler> >&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: bool& inline_assertion_check<true, bool&>(bool&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::optional<fs::path> const& inline_assertion_check<true, std::optional<fs::path> const&>(std::optional<fs::path> const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::optional<std::pair<XOnlyPubKey, bool> >& inline_assertion_check<false, std::optional<std::pair<XOnlyPubKey, bool> >&>(std::optional<std::pair<XOnlyPubKey, bool> >&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) Unexecuted instantiation: std::map<uint256, MuSig2SecNonce, std::less<uint256>, std::allocator<std::pair<uint256 const, MuSig2SecNonce> > >* const& inline_assertion_check<false, std::map<uint256, MuSig2SecNonce, std::less<uint256>, std::allocator<std::pair<uint256 const, MuSig2SecNonce> > >* const&>(std::map<uint256, MuSig2SecNonce, std::less<uint256>, std::allocator<std::pair<uint256 const, MuSig2SecNonce> > >* const&, std::source_location const&, std::basic_string_view<char, std::char_traits<char> >) |
98 | | |
99 | 0 | #define STR_INTERNAL_BUG(msg) StrFormatInternalBug((msg), std::source_location::current()) |
100 | | |
101 | | /** |
102 | | * Identity function. Throw a NonFatalCheckError when the condition evaluates to false |
103 | | * |
104 | | * This should only be used |
105 | | * - where the condition is assumed to be true, not for error handling or validating user input |
106 | | * - where a failure to fulfill the condition is recoverable and does not abort the program |
107 | | * |
108 | | * For example in RPC code, where it is undesirable to crash the whole program, this can be generally used to replace |
109 | | * asserts or recoverable logic errors. A NonFatalCheckError in RPC code is caught and passed as a string to the RPC |
110 | | * caller, which can then report the issue to the developers. |
111 | | */ |
112 | | #define CHECK_NONFATAL(condition) \ |
113 | 20.0k | inline_check_non_fatal(condition, std::source_location::current(), #condition) Unexecuted instantiation: blockchain.cpp:GetUTXOStats(CCoinsView*, node::BlockManager&, kernel::CoinStatsHashType, std::function<void ()> const&, CBlockIndex const*, bool)::$_0::operator()() const Unexecuted instantiation: blockchain.cpp:gettxoutsetinfo()::$_0::operator()(RPCMethod const&, JSONRPCRequest const&) const::{lambda()#1}::operator()() constUnexecuted instantiation: blockchain.cpp:scanblocks()::$_0::operator()(RPCMethod const&, JSONRPCRequest const&) const::{lambda()#2}::operator()() const |
114 | | |
115 | | /** Identity function. Abort if the value compares equal to zero */ |
116 | 23.7k | #define Assert(val) inline_assertion_check<true>(val, std::source_location::current(), #val) |
117 | | |
118 | | /** |
119 | | * Assume is the identity function. |
120 | | * |
121 | | * - Should be used to run non-fatal checks. In debug builds it behaves like |
122 | | * Assert()/assert() to notify developers and testers about non-fatal errors. |
123 | | * In production it doesn't warn or log anything. |
124 | | * - For fatal errors, use Assert(). |
125 | | * - For non-fatal errors in interactive sessions (e.g. RPC or command line |
126 | | * interfaces), CHECK_NONFATAL() might be more appropriate. |
127 | | */ |
128 | 20.2k | #define Assume(val) inline_assertion_check<false>(val, std::source_location::current(), #val) httpserver.cpp:auto http_bitcoin::HTTPServer::AcceptConnection(Sock const&, CService&)::$_0::operator()<std::shared_ptr<Sock> >(std::shared_ptr<Sock> const&) const Line | Count | Source | 128 | 17.8k | #define Assume(val) inline_assertion_check<false>(val, std::source_location::current(), #val) |
Unexecuted instantiation: net_processing.cpp:(anonymous namespace)::PeerManagerImpl::ProcessMessage((anonymous namespace)::Peer&, CNode&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DataStream&, std::chrono::time_point<NodeClock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >, std::atomic<bool> const&)::$_2::operator()() const Unexecuted instantiation: mini_miner.cpp:auto node::MiniMiner::SanityCheck() const::$_0::operator()<std::_Rb_tree_iterator<std::pair<transaction_identifier<false> const, node::MiniMinerMempoolEntry> > >(std::_Rb_tree_iterator<std::pair<transaction_identifier<false> const, node::MiniMinerMempoolEntry> > const&) const Unexecuted instantiation: mini_miner.cpp:auto node::MiniMiner::SanityCheck() const::$_1::operator()<transaction_identifier<false> >(transaction_identifier<false> const&) const Unexecuted instantiation: validation.cpp:auto ChainstateManager::ReceivedBlockTransactions(CBlock const&, CBlockIndex*, FlatFilePos const&)::$_0::operator()<std::unique_ptr<Chainstate, std::default_delete<Chainstate> > >(std::unique_ptr<Chainstate, std::default_delete<Chainstate> > const&) const Unexecuted instantiation: ephemeral_policy.cpp:auto CheckEphemeralSpends(std::vector<std::shared_ptr<CTransaction const>, std::allocator<std::shared_ptr<CTransaction const> > > const&, CFeeRate, CTxMemPool const&, TxValidationState&, transaction_identifier<true>&)::$_0::operator()<std::shared_ptr<CTransaction const> >(std::shared_ptr<CTransaction const> const&) const Unexecuted instantiation: scriptpubkeyman.cpp:wallet::DescriptorScriptPubKeyMan::GetKey(CKeyID const&) const::$_0::operator()(std::vector<unsigned char, secure_allocator<unsigned char> > const&) const Unexecuted instantiation: wallet.cpp:wallet::CWallet::GetScriptPubKeyMans(CScript const&) const::$_0::operator()(wallet::ScriptPubKeyMan*) const Branch (128:51): [True: 0, False: 0]
Branch (128:51): [True: 0, False: 0]
|
129 | | |
130 | | /** |
131 | | * NONFATAL_UNREACHABLE() is a macro that is used to mark unreachable code. It throws a NonFatalCheckError. |
132 | | */ |
133 | | #define NONFATAL_UNREACHABLE() \ |
134 | 0 | throw NonFatalCheckError { "Unreachable code reached (non-fatal)", std::source_location::current() } |
135 | | |
136 | | #if defined(__has_feature) |
137 | | # if __has_feature(address_sanitizer) |
138 | | # include <sanitizer/asan_interface.h> |
139 | | # endif |
140 | | #endif |
141 | | |
142 | | #ifndef ASAN_POISON_MEMORY_REGION |
143 | 610 | # define ASAN_POISON_MEMORY_REGION(addr, size) ((void)(addr), (void)(size)) |
144 | 1.22k | # define ASAN_UNPOISON_MEMORY_REGION(addr, size) ((void)(addr), (void)(size)) |
145 | | #endif |
146 | | |
147 | | #endif // BITCOIN_UTIL_CHECK_H |