44250 Commits

Author SHA1 Message Date
glozow
bbdab3ef7b [prep/test] make wallet_fundrawtransaction's minrelaytxfee assumption explicit
Github-Pull: #33106
Rebased-From: 2e515d2897eaa5a9b012eb78aef105e1cf80d42b
2025-08-20 10:19:23 -04:00
glozow
da30ca0efa [prep/util] help MockMempoolMinFee handle more precise feerates
Use a virtual size of 1000 to keep precision when using a feerate
(which is rounded to the nearest satoshi per kvb) that isn't just an
integer.

Github-Pull: #33106
Rebased-From: 457cfb61b5323a13218b3cfb5a6a6d8b3a7c5f7f
2025-08-20 10:19:23 -04:00
glozow
a0ae3fc8a7 [prep/test] replace magic number 1000 with respective feerate vars
Github-Pull: #33106
Rebased-From: 3eab8b724044dc321f70e5eed66b149713158a04
2025-08-20 10:19:23 -04:00
glozow
1c1970fb45 [miner] lower default -blockmintxfee to 1sat/kvB
Back when we implemented coin age priority as a miner policy, miners
mempools might admit transactions paying very low fees, but then want to
set a higher fee for block inclusion. However, since coin age priority
was removed in v0.15, the block assembly policy is solely based on fees,
so we do not need to apply minimum feerate rules in multiple places. In
fact, the block assembly policy ignoring transactions that are added to
the mempool is likely undesirable as we waste resources accepting and
storing this transaction.

Instead, rely on mempool policy to enforce a minimum entry feerate to
the mempool (minrelaytxfee). Set the minimum block feerate to the
minimum non-zero amount (1sat/kvB) so it collects everything it finds in
mempool into the block.

Github-Pull: #33106
Rebased-From:  5f2df0ef78be7b24798d0983c9b962740608f1f4
2025-08-20 10:19:23 -04:00
glozow
3a7e093f94 [doc] assert that default min relay feerate and incremental are the same
Github-Pull: #33106
Rebased-From: d6213d6aa114aeed6804a585491d741386fd2739
2025-08-20 10:19:23 -04:00
glozow
567c3ee3cb [test] explicitly check default -minrelaytxfee and -incrementalrelayfee
Github-Pull: #33106
Rebased-From:  1fbee5d7b61b83e68e4230c8a97ca308de92c4c3
2025-08-20 10:19:23 -04:00
glozow
6b5396c4b1 [test] RBF rule 4 for various incrementalrelayfee settings
Github-Pull: #33106
Rebased-From: 72dc18467dbfc16cdbda2dd109b087243b397799
2025-08-20 10:19:23 -04:00
glozow
03da7aff99 [test] check bypass of minrelay for various minrelaytxfee settings
Github-Pull: #33106
Rebased-From: 85f498893f54ea7d84f2bdf12aa35d198edf8a72
2025-08-20 10:19:23 -04:00
glozow
4e3cfa660d [test] check miner doesn't select 0fee transactions
Github-Pull: #33106
Rebased-From: e5f896bb1f052fb8c7811c6024cb49143b427512
2025-08-20 10:19:15 -04:00
merge-script
c5196bc9c4
Merge bitcoin/bitcoin#33225: [29.x] Backport logging ratelimiting
0022e25333a8eabf79c0341f94cf06db36e32f4f test: modify logging_filesize_rate_limit params (Eugene Siegel)
206f5902db5c5b0a08f0575b5ba6007730011e5f config: add DEBUG_ONLY -logratelimit (Eugene Siegel)
dfdd407c428030171213496c0cc2f30517bb86a1 test: logging_filesize_rate_limit improvements (stickies-v)
11538160b3d9a44990ac2c3a766764198a7e9127 test: don't leak log category mask across tests (stickies-v)
4ed7a51642dfa83159be7207c158dc7544d35f65 test: add ReadDebugLogLines helper function (stickies-v)
acfa83d9d000abd263d8cb5ac3355cfd8cf49ec0 log: make m_limiter a shared_ptr (stickies-v)
81751341e9b5582fc5645ff88c5dd67cbd09cf43 log: clean up LogPrintStr_ and Reset, prefix all logs with "[*]" when there are suppressions (Eugene Siegel)
7c3820ff63d91c9f5173e514d74814a34e647bdb log: change LogLimitStats to struct LogRateLimiter::Stats (Eugene Siegel)
dfe4e19f66e0acd4f14f726f29aeb6ef7d8506c4 log: clarify RATELIMIT_MAX_BYTES comment, use RATELIMIT_WINDOW (Eugene Siegel)
273ffda2c878954f30554bb88d286896d1177add log: remove const qualifier from arguments in LogPrintFormatInternal (Eugene Siegel)
9cde68fa984571d68177152af0a029b43fef7bab log: avoid double hashing in SourceLocationHasher (Eugene Siegel)
25f975b8df8ac4692cdfe9c423f2903e97f34a2c test: remove noexcept(false) comment in ~DebugLogHelper (Eugene Siegel)
24c793d06c93768be88e9f8d0bb62936e199f68c doc: add release notes for new rate limiting logging behavior (Eugene Siegel)
0b6b096421ac9d1c7b0542ea147562269e1c5bec log: Add rate limiting to LogPrintf, LogInfo, LogWarning, LogError, LogPrintLevel (Eugene Siegel)
a0992a842ed098ebcd5f955b232b9abb154d6f6e log: use std::source_location in place of __func__, __FILE__, __LINE__ (Eugene Siegel)
41262cc4d53389ddadc59573e4eb246e085268ce log: introduce LogRateLimiter, LogLimitStats, Status (Eugene Siegel)
4987c035318536a76f3f5dd00beb417d8fb4b24c test: Mark ~DebugLogHelper as noexcept(false) (Eugene Siegel)

Pull request description:

  Backports:
  * #32604
    * Note that 24c793d06c93768be88e9f8d0bb62936e199f68c isn't clean, as it's added directly to `release-notes.md`.
  * #33011
  * #33211

ACKs for top commit:
  instagibbs:
    utACK 0022e25333a8eabf79c0341f94cf06db36e32f4f
  dergoegge:
    utACK 0022e25333a8eabf79c0341f94cf06db36e32f4f
  stickies-v:
    ACK 0022e25333a8eabf79c0341f94cf06db36e32f4f - all backports clean except the release notes one, as indicated.

Tree-SHA512: 466aa6884a2c936131cf222b94943148bc385fc9574840cc63933f510c40c2cc74d8c9a9b2560205926a0a70a93de0e191a623fa2352628d8cead45bbee59b1c
2025-08-20 09:54:28 -04:00
Eugene Siegel
0022e25333
test: modify logging_filesize_rate_limit params
Change time_window from 20s to 1h so Reset is not accidentally called
if the test takes a while.

Change num_lines from 1024 to 10 since LogRateLimiter is parameterized
and does not require logging 1MiB of data.

Co-Authored-By: stickies-v <stickies-v@protonmail.com>

Github-Pull: #33211
Rebased-From: 5dda364c4b1965da586db7b81de8be90b6919414
2025-08-20 12:01:59 +01:00
Eugene Siegel
206f5902db
config: add DEBUG_ONLY -logratelimit
Use -nologratelimit by default in functional tests if the bitcoind
version supports it.

Co-Authored-By: stickies-v <stickies-v@protonmail.com>

Github-Pull: #33011
Rebased-From: 5c74a0b397cb3db94761bad78801eed4544155b9
2025-08-20 12:01:35 +01:00
stickies-v
dfdd407c42
test: logging_filesize_rate_limit improvements
- Add helper functions and structs to improve readability and
  reusability of test code
- Make tests more specific by comparing all produced log lines with
  expected log lines instead of relying on approximations or proxies.

Github-Pull: #33011
Rebased-From: 9f3b017bcc067bba1d1682a5d4e65b5450dc10c4
2025-08-20 12:01:12 +01:00
stickies-v
11538160b3
test: don't leak log category mask across tests
This ensures log tests behave consistently when other tests modify
the log category mask.

Github-Pull: #33011
Rebased-From: 350193e5e2efabb3eb66197b91869b946ec5428c
2025-08-20 12:00:48 +01:00
stickies-v
4ed7a51642
test: add ReadDebugLogLines helper function
Deduplicates repeated usage of the same functionality.

Github-Pull: #33011
Rebased-From: 05d7c22479bf96bab9f8c8b8fa90368429ad2c88
2025-08-20 12:00:22 +01:00
stickies-v
acfa83d9d0
log: make m_limiter a shared_ptr
This allows us to safely and explicitly manage the dual dependency
on the limiter: one for the Logger, and one for the CScheduler.

Github-Pull: #33011
Rebased-From: 3d630c2544e19480268426cda245796d4ce34ac3
2025-08-20 11:59:45 +01:00
Eugene Siegel
81751341e9
log: clean up LogPrintStr_ and Reset, prefix all logs with "[*]" when there are suppressions
In LogPrintStr_:
- remove an unnecessary BCLog since we are in the BCLog namespace.
- remove an unnecessary \n when rate limiting is triggered since
  FormatLogStrInPlace will add it.
- move the ratelimit bool into an else if block.
- prefix all log lines with [*] when suppressions exist. Previously this
  was only done if should_ratelimit was true.

In Reset:
- remove an unnecessary \n since FormatLogStrInPlace will add it.
- Change Level::Info to Level::Warning.

Github-Pull: #33011
Rebased-From: e8f9c37a3b4c9c88baddb556c4b33a4cbba1f614
2025-08-20 11:55:28 +01:00
Eugene Siegel
7c3820ff63
log: change LogLimitStats to struct LogRateLimiter::Stats
Clean up the noisy LogLimitStats and remove references to the time
window.

Co-Authored-By: stickies-v <stickies-v@protonmail.com>

Github-Pull: #33011
Rebased-From: 3c7cae49b692bb6bf5cae5ee23479091bed0b8be
2025-08-20 11:54:59 +01:00
Eugene Siegel
dfe4e19f66
log: clarify RATELIMIT_MAX_BYTES comment, use RATELIMIT_WINDOW
Co-Authored-By: stickies-v <stickies-v@protonmail.com>

Github-Pull: #33011
Rebased-From: 8319a134684df2240057a5e8afaa6ae441fb8a58
2025-08-20 11:53:48 +01:00
Eugene Siegel
273ffda2c8
log: remove const qualifier from arguments in LogPrintFormatInternal
Co-Authored-By: l0rinc <pap.lorinc@gmail.com>

Github-Pull: #33011
Rebased-From: 5f70bc80df06ca85d44e8201d47e7086e971fdea
2025-08-20 11:52:01 +01:00
Eugene Siegel
9cde68fa98
log: avoid double hashing in SourceLocationHasher
Co-Authored-By: l0rinc <pap.lorinc@gmail.com>

Github-Pull: #33011
Rebased-From: b8e92fb3d4137f91fe6a54829867fc54357da648
2025-08-20 11:51:31 +01:00
Eugene Siegel
25f975b8df
test: remove noexcept(false) comment in ~DebugLogHelper
Github-Pull: #33011
Rebased-From: 616bc22f131132b9239ef362dca8c6bce000a539
2025-08-20 11:51:06 +01:00
Eugene Siegel
24c793d06c
doc: add release notes for new rate limiting logging behavior
Github-Pull: #32604
Rebased-From: 4c772cbd83e502a1339e8993d192ea6416ecd45c
2025-08-20 11:47:20 +01:00
Eugene Siegel
0b6b096421
log: Add rate limiting to LogPrintf, LogInfo, LogWarning, LogError, LogPrintLevel
To mitigate disk-filling attacks caused by unsafe usages of LogPrintf and
friends, we rate-limit them by passing a should_ratelimit bool that
eventually makes its way to LogPrintStr which may call
LogRateLimiter::Consume. The rate limiting is accomplished by
adding a LogRateLimiter member to BCLog::Logger which tracks source
code locations for the given logging window.

Every hour, a source location can log up to 1MiB of data. Source
locations that exceed the limit will have their logs suppressed for the
rest of the window determined by m_limiter.

This change affects the public LogPrintLevel function if called with
a level >= BCLog::Level::Info.

The UpdateTipLog function has been changed to use the private LogPrintLevel_
macro with should_ratelimit set to false. This allows UpdateTipLog to log
during IBD without hitting the rate limit.

Note that on restart, a source location that was rate limited before the
restart will be able to log until it hits the rate limit again.

Co-Authored-By: Niklas Gogge <n.goeggi@gmail.com>
Co-Authored-By: stickies-v <stickies-v@protonmail.com>

Github-Pull: #32604
Rebased-From: d541409a64c60d127ff912dad9dea949d45dbd8c
2025-08-20 11:45:06 +01:00
Eugene Siegel
a0992a842e
log: use std::source_location in place of __func__, __FILE__, __LINE__
The std::source_location conveniently stores the file name, line number,
and function name of a source code location. We switch to using it instead
of the __func__ identifier and the __FILE__ and __LINE__ macros.

BufferedLog is changed to have a std::source_location member, replacing the
source_file, source_line, and logging_function members. As a result,
MemUsage no longer explicitly counts source_file or logging_function as the
std::source_location memory usage is included in the MallocUsage call.

This also changes the behavior of -logsourcelocations as std::source_location
includes the entire function signature. Because of this, the functional test
feature_config_args.py must be changed to no longer include the function
signature as the function signature can differ across platforms.

Co-Authored-By: Niklas Gogge <n.goeggi@gmail.com>
Co-Authored-By: stickies-v <stickies-v@protonmail.com>

Github-Pull: #32604
Rebased-From: a6a35cc0c23d0d529bfeb2f40d83d61f15ca7b40
2025-08-20 11:42:01 +01:00
Eugene Siegel
41262cc4d5
log: introduce LogRateLimiter, LogLimitStats, Status
LogRateLimiter will be used to keep track of source locations and our
current time-based logging window. It contains an unordered_map and a
m_suppressions_active bool to track source locations. The map is keyed
by std::source_location, so a custom Hash function (SourceLocationHasher)
and custom KeyEqual function (SourceLocationEqual) is provided.
SourceLocationHasher uses CSipHasher(0,0) under the hood to get a
uniform distribution.

A public Reset method is provided so that a scheduler (e.g. the
"b-scheduler" thread) can periodically reset LogRateLimiter's state when
the time window has elapsed.

The LogRateLimiter::Consume method checks if we have enough available
bytes in our rate limiting budget to log an additional string. It
returns a Status enum that denotes the rate limiting status and can
be used by the caller to emit a warning, skip logging, etc.

The Status enum has three states:
- UNSUPPRESSED     (logging was successful)
- NEWLY_SUPPRESSED (logging was succcesful, next log will be suppressed)
- STILL_SUPPRESSED (logging was unsuccessful)

LogLimitStats counts the available bytes left for logging per source
location for the current logging window. It does not track actual source
locations; it is used as a value in m_source_locations.

Also exposes a SuppressionsActive() method so the logger can use
that in a later commit to prefix [*] to logs whenenever suppressions
are active.

Co-Authored-By: Niklas Gogge <n.goeggi@gmail.com>
Co-Authored-By: stickies-v <stickies-v@protonmail.com>

Github-Pull: #32604
Rebased-From: afb9e39ec5552e598a5febaa81820d5509b7c5d2
2025-08-20 11:37:48 +01:00
Eugene Siegel
4987c03531
test: Mark ~DebugLogHelper as noexcept(false)
We mark ~DebugLogHelper as noexcept(false) to be able to catch the
exception it throws. This lets us use it in test in combination with
BOOST_CHECK_THROW and BOOST_CHECK_NO_THROW to check that certain log
messages are (not) logged.

Co-Authored-By: Niklas Gogge <n.goeggi@gmail.com>

Github-Pull: #32604
Rebased-From: df7972a6cfd919b972bcbba07de85f7797898529
2025-08-20 11:37:17 +01:00
merge-script
837c5c7fd8
Merge bitcoin/bitcoin#33074: [29.x] Backports
b9e637bd0ee4d1da5f587ec33cbed9ee28c07daf doc: update release notes for 29.x (fanquake)
2b9738a0835f50845ed183e124347b07b7bcce10 test: Fix 'getdescriptoractivity' RPCHelpMan, add test to verify 'spend_vin' is the correct field (Chris Stewart)
4e8abca44506ac39166e4a7372f8ee0f6d1def0a rpc: fix getpeerinfo ping duration unit docs (0xb10c)
a08886d5640a808e302108575ffbebd7df5f8f11 doc: move `cmake -B build -LH` up in Unix build docs (Bufo)
264418f80cea7fd5ae818a2a2887fab62de2b0a2 doc: Add rel note for breaking change in dumptxoutset RPC (Chris Stewart)
a18b53f99e4bf7f038dac635f27bddf17d285010 guix: warn SOURCE_DATE_EPOCH set in guix-codesign (will)
9437415024da7dd51705e46e4243f7e1694acaf5 tracing: fix pointer argument handling in mempool_monitor.py (deadmanoz)
3cd8612cd7719c0a4dfa104bae3467b562d567d7 doc/zmq: fix unix socket path example (Roman Zeyde)

Pull request description:

  Backports:
  * #33070
  * #33073
  * #33086
  * #33088
  * #33103
  * #33119
  * #33133

ACKs for top commit:
  glozow:
    ACK b9e637bd0ee4d1da5f587ec33cbed9ee28c07daf

Tree-SHA512: bf2a700ec4d730548cf5abf10930b41e26742ea23582149b0eddcaaa48c1db05ab657ef9ffc7dcba2d1af2e265d0ea866d7b484a321a9c9ac662a6dc2263d102
2025-08-15 13:59:08 +01:00
fanquake
b9e637bd0e
doc: update release notes for 29.x 2025-08-06 11:18:21 +01:00
Chris Stewart
2b9738a083
test: Fix 'getdescriptoractivity' RPCHelpMan, add test to verify 'spend_vin' is the correct field
Github-Pull: #33119
Rebased-From: 3543bfdfec345cf2c952143c31674ef02de2a64b
2025-08-06 11:17:38 +01:00
0xb10c
4e8abca445
rpc: fix getpeerinfo ping duration unit docs
The getpeerinfo docs incorrectly specified the ping durations as
milliseconds. This was incorrectly changed in a3789c700b5a43efd4b366b4241ae840d63f2349
(released in v25; master since Sept. 2022). The correct duration unit
is seconds.

Also, remove the documentation of the getpeerinfo RPC response from the
ping RPC since it's incomplete. Better to just reference the getpeerinfo
RPC and it's documenation for this.

Github-Pull: #33133
Rebased-From: 1252eeb997df2eb12c33d92eb1a5c9d6643a67ff
2025-08-05 09:44:47 +01:00
Bufo
a08886d564
doc: move cmake -B build -LH up in Unix build docs
Github-Pull: #33088
Rebased-From: 6757052fc439bedd1fa88ee1d23b4f17cf2c4f7a
2025-08-03 12:25:29 +01:00
Chris Stewart
264418f80c
doc: Add rel note for breaking change in dumptxoutset RPC
This was missed in the v29.0 release notes.
2025-07-30 16:49:37 +01:00
will
a18b53f99e
guix: warn SOURCE_DATE_EPOCH set in guix-codesign
Currently there is a warning for this in guix-build, but we also need
one in guix-codesign, otherwise the codesigned hashes are not
reproducible.

Move common functionality into prelude and call the function in both
guix actions.

Github-Pull: #33073
Rebased-From: 1bed0f734b3f2dd876193b5cad303bfab1d250d5
2025-07-29 16:35:30 +01:00
deadmanoz
9437415024
tracing: fix pointer argument handling in mempool_monitor.py
The BPF code was incorrectly passing pointer variables by value to
bpf_usdt_readarg(), causing the function to fail silently and resulting
in transaction hashes and reason strings displaying as zeros or garbage.

This fix adds the missing reference operator (&) when passing pointer
variables to bpf_usdt_readarg(), allowing the function to properly
write the pointer values and enabling correct display of transaction
hashes and removal/rejection reasons.

Fixes the regression introduced in ec47ba349d where bpf_usdt_readarg_p
was replaced with bpf_usdt_readarg but the calling convention wasn't
properly updated for pointer arguments.

Github-Pull: #33086
Rebased-From: 0ce041ea88dbea2bdfaf21fd0e60a86012498f0a
2025-07-29 10:54:48 +01:00
Roman Zeyde
3cd8612cd7
doc/zmq: fix unix socket path example
Following 75a5c8258e/doc/release-notes/release-notes-28.0.md (L105)

Github-Pull: #33070
Rebased-From: e83699a626b8a41c8fb9d0450e14e06a29a98bb8
2025-07-28 10:28:44 +01:00
merge-script
565af03c37
Merge bitcoin/bitcoin#33056: [29.x] final changes for v29.1rc1
4c2d285b706058ece7092d03f0e5ad1112c2097f [doc] update release notes for v29.1rc1 (glozow)
06eb42d83cf7eb76dc89bb6ca04f51eb17847d06 [doc] manpages for 29.1rc1 (glozow)
735ffad864ce6cc1f9a1c13f0cb15bcf30284dd6 [build] bump version to 29.1rc1 (glozow)

Pull request description:

ACKs for top commit:
  marcofleon:
    nice, ACK 4c2d285b706058ece7092d03f0e5ad1112c2097f
  fanquake:
    ACK 4c2d285b706058ece7092d03f0e5ad1112c2097f
  darosior:
    ACK 4c2d285b706058ece7092d03f0e5ad1112c2097f

Tree-SHA512: ffcc45566e33b8c4b80da1c751a5045863e06a31de81ec6f3f5ba26717eb8e7087139f7d2696ed5c61170efb62b5b9416f350bcb108a03afcdfa38e77067d612
v29.1rc1
2025-07-25 16:28:46 +01:00
glozow
4c2d285b70 [doc] update release notes for v29.1rc1 2025-07-24 15:54:20 -04:00
glozow
06eb42d83c [doc] manpages for 29.1rc1 2025-07-24 13:20:21 -04:00
glozow
735ffad864 [build] bump version to 29.1rc1 2025-07-24 12:40:27 -04:00
merge-script
4bf77955ed
Merge bitcoin/bitcoin#33013: [29.x] Backport #32521
f25dc84b2892e6bdbbd0471add9fcb2757700981 doc: update release notes for 29.x (Antoine Poinsot)
313023369b8e4ffb268cb642101680fe7f746fea qa: functional test a transaction running into the legacy sigop limit (Antoine Poinsot)
0a4671d5eba2499a27e530536b48b86166319fe8 qa: unit test standardness of inputs packed with legacy sigops (Antoine Poinsot)
204b96591542373dc75c6a6401b477f4b6615e69 policy: make pathological transactions packed with legacy sigops non-standard. (Antoine Poinsot)

Pull request description:

  This backports PR #32521 to make the change available to miners who can't (or don't want to) upgrade past version 29.

ACKs for top commit:
  marcofleon:
    reACK f25dc84b2892e6bdbbd0471add9fcb2757700981
  glozow:
    ACK f25dc84b2892e6bdbbd0471add9fcb2757700981

Tree-SHA512: d5e06618720ed1a96d8a5fccdd8d1dbcbb5748505aa0df69198326828fe13f220e55bbce813f6f2daae82d23348e1f83a3a20a28639ec3fc2455c5b6e79a56e6
2025-07-24 12:32:38 -04:00
merge-script
951b349af1
Merge bitcoin/bitcoin#33052: [29.x] backport #32069
c6fe6971bfa52d8fe2901a051f18da9f3bcb26a9 doc: update release notes for 29.x (fanquake)
380b5aded21772f9b7a31418109c20b2e15d090e test: fix intermittent failure in wallet_reorgsrestore.py (furszy)

Pull request description:

  Backport https://github.com/bitcoin/bitcoin/pull/32069 to 29. This is a test flakiness fix for https://github.com/bitcoin/bitcoin/pull/31757, which was backported to 29 in https://github.com/bitcoin/bitcoin/pull/32589.

ACKs for top commit:
  marcofleon:
    ACK c6fe6971bfa52d8fe2901a051f18da9f3bcb26a9

Tree-SHA512: 82517eef67c8d0fe57e70cb769d1b040ea8dea41c2d2e5b442477e1c7add7d7bac1c4aabbebc5b7d440db5b7bf00f1d70dc6ffb375b7a2e77d9599c543579122
2025-07-24 16:59:04 +01:00
fanquake
c6fe6971bf doc: update release notes for 29.x 2025-07-24 10:00:40 -04:00
furszy
380b5aded2
test: fix intermittent failure in wallet_reorgsrestore.py
Wait until the node's process has fully stopped before starting a new instance.

Since the same code is used in tool_wallet.py, this consolidates the behavior
into a 'kill_process()' function.

Github-Pull: bitcoin/bitcoin#32069
Rebased-From: 36b0713edc4655f6e0c291975d6d280fbc89cf2e
2025-07-24 09:29:11 -04:00
merge-script
8063d55446
Merge bitcoin/bitcoin#33046: [29.x] test: Do not pass tests on unhandled exceptions
411e15194b3a770ff455d413a0fe2495f0362297 doc: update release notes for 29.x (fanquake)
5e327e6703f10d3de12c56bb9701b07521a9f703 test: Log KeyboardInterrupt as exception (MarcoFalke)
79e1a3c9c6a4661562d419dc3427b35060ed0451 test: Do not pass tests on unhandled exceptions (MarcoFalke)

Pull request description:

  Backports #33001 to `29.x`.

ACKs for top commit:
  pablomartin4btc:
    ACK 411e15194b3a770ff455d413a0fe2495f0362297
  marcofleon:
    lgtm ACK 411e15194b3a770ff455d413a0fe2495f0362297

Tree-SHA512: ea930f8c24a0a5e18f2107e96540db5c39941442059190d6104dfcf88b4a33d06ecaa7dbdf8baa91e564ee7ca3d12df5118c7fa404a38108de4ad0e5f122f72d
2025-07-24 12:15:56 +01:00
Antoine Poinsot
f25dc84b28 doc: update release notes for 29.x 2025-07-23 12:47:50 -04:00
fanquake
411e15194b
doc: update release notes for 29.x 2025-07-23 16:47:49 +01:00
MarcoFalke
5e327e6703
test: Log KeyboardInterrupt as exception
log.exception is more verbose and useful to debug timeouts.

Also, log stderr for CalledProcessError to make debugging easier.

Github-Pull: #33001
Rebased-From: faa3e684118bffa7a98cf76eeeb59243219df900
2025-07-23 16:47:12 +01:00
MarcoFalke
79e1a3c9c6
test: Do not pass tests on unhandled exceptions
This adds a missing catch for BaseException (e.g. SystemExit), which
would otherwise be silently ignored.

Also, remove the redundant other catches, which are just calling
log.exception with a redundant log message.

Github-Pull: #33001
Rebased-From: fa30b34026f76a5b8af997152fced2d281782e0d
2025-07-23 16:46:48 +01:00
Antoine Poinsot
313023369b
qa: functional test a transaction running into the legacy sigop limit
It's useful to have an end-to-end test in addition to the unit test to sanity check the RPC error as
well as making sure the transaction is otherwise fully standard.

Github-Pull: bitcoin/bitcoin#32521
Rebased-From: 96da68a38fa295d2414685739c41b8626e198d27
2025-07-18 16:51:54 -04:00