e95c484f7de7fe30d5a2e87c0e7e2a5faf9c1a5f doc: Update release notes for 25.2 final (Ava Chow)
14b85b62760906ca73976b1ac09d8eb3bb76e3c8 doc: Update manpages for 25.2 final (Ava Chow)
1c13eae6e06fd816d190ad8a1b63fb05a5bb312b doc: Bump bips.md to 25.2 (Ava Chow)
03a568deb6dad58e1d69f0339ab7371378c986d2 build: Bump to 25.2 final (Ava Chow)
Pull request description:
Final changes for 25.2 release
ACKs for top commit:
glozow:
utACK e95c484f7de7fe30d5a2e87c0e7e2a5faf9c1a5f
fanquake:
ACK e95c484f7de7fe30d5a2e87c0e7e2a5faf9c1a5f
Tree-SHA512: 10a4d6d516e2bea9b4383eb174a6c7827be0359522d366746ead0a28f275e0cadf6e5e9a0e4cafe425438532a57ada0ecbfba300f02370eac411f101dd86dfe6
We preemptively perform a block mutation check before further processing
a block message (similar to early sanity checks on other messsage
types). The main reasons for this change are as follows:
- `CBlock::GetHash()` is a foot-gun without a prior mutation check, as
the hash returned only commits to the header but not to the actual
transactions (`CBlock::vtx`) contained in the block.
- We have observed attacks that abused mutated blocks in the past, which
could have been prevented by simply not processing mutated blocks
(e.g. https://github.com/bitcoin/bitcoin/pull/27608).
Github-Pull: #29412
Rebased-From: 49257c0304828a185c273fcb99742c54bbef0c8e
9f13dc1ed3020d55ba79b1a62ca0db6b510357ab doc: Update release notes for 25.2rc1 (Ava Chow)
a27662b16a626ade5f26613e9f5323edcd6e9105 doc: update manpages for 25.2rc1 (Ava Chow)
65c617178420d5904fd43399eb3c87e00aff524e build: Bump to 25.2rc1 (Ava Chow)
cf0f43ee42f0bf8d345b109b0ba552faf7cb62e1 wallet: Fix use-after-free in WalletBatch::EraseRecords (MarcoFalke)
6acfc4324cc98a10e083e5f391435bbfde4d8f69 Use only Span{} constructor for byte-like types where possible (MarcoFalke)
b40d10787b2dc161e236e50eb296bdf02f93933f util: Allow std::byte and char Span serialization (MarcoFalke)
Pull request description:
Backport:
* #29176
* #27927#29176 does not cleanly backport, and it also requires 27927 to work. Both are still fairly simple backports.
Also does the rest of the version bump tasks for 25.2rc1.
ACKs for top commit:
fanquake:
ACK 9f13dc1ed3020d55ba79b1a62ca0db6b510357ab
Tree-SHA512: 9d9dbf415f8559410eba9a431b61a8fc94216898d2d1fd8398e1f7a22a04790faade810e65324c7a797456b33396c3a58f991e81319aaaa63d3ab441e5e20dbc
The crash would happen when querying a mempool transaction with verbosity=2, while pruning.
Github-Pull: #29003
Rebased-From: 494a926d05df44b60b3bc1145ad2a64acf96f61b
This commits fixes a crash bug that can be caused with the following steps:
- change to the "Transactions" view
- right-click on an arbitrary transaction -> "Show transaction details"
- close the transaction detail window again
- select "Settings" -> "Mask values"
The problem is that the list of opened dialogs, tracked in the member
variable `m_opened_dialogs`, is only ever appended with newly opened
transaction detail dialog pointers, but never removed. This leads to
dangling pointers in the list, and if the "Mask values" menu item is
selected, a crash is caused in the course of trying to close the opened
transaction detail dialogs (see `closeOpenedDialogs()` method). Fix this
by removing the pointer from the list if the corresponding widget is
destroyed.
Github-Pull: https://github.com/bitcoin-core/gui/pull/774
Rebased-From: e26e665f9f64a962dd56053be817cc953e714847
a13670090dbf34daf2a378a9870817e19d4c2aa0 doc: update release notes for 25.1 (fanquake)
e8d5c35e8094382537c3d1704b46f2554818a146 doc: update manual pages for 25.1 (fanquake)
9e00b73ee776c7bb902016121d28b9b5bea6537b build: bump version to 25.1 final (fanquake)
Pull request description:
Final changes for `v25.1`.
PR for bitcoincore.org is here: https://github.com/bitcoin-core/bitcoincore.org/pull/991.
No additional changes have been backported since rc1 (tagged 14 days ago),
and no bugs or issues have been reported (test bins have been available for 9 days).
ACKs for top commit:
hebasto:
ACK a13670090dbf34daf2a378a9870817e19d4c2aa0.
TheCharlatan:
lgtm ACK a13670090dbf34daf2a378a9870817e19d4c2aa0
Tree-SHA512: 037f937dd4d2a9de15ff15a80f35b6047b61ffc3d9a33e7d4a4fcbce6302569bbc516c6da5849211b34ebbe914c4edcdd182e2d1d43897d0dcd32834ce6f2574
10f3f813b251d16c86d0b41bbdd7b7ab4a22e00d doc: add release notes for 25.1rc1 (fanquake)
71aed7aa31507220ca8b53a8d3c1b62a73a80c45 doc: update manual pages for 25.1rc1 (fanquake)
02f059c8199efbcbec47ff289f71ac30a5d7313d build: Bump version to 25.1rc1 (fanquake)
dc1fcec0260db8fa95d74d46d2e1b302e0a66782 doc: add 25.0 release notes (fanquake)
Pull request description:
Final changes to tag a `25.1rc1`.
Bumps version numbers, man pages, adds release notes etc.
ACKs for top commit:
dergoegge:
ACK 10f3f813b251d16c86d0b41bbdd7b7ab4a22e00d
hebasto:
ACK 10f3f813b251d16c86d0b41bbdd7b7ab4a22e00d, I have reviewed the code and it looks OK.
willcl-ark:
ACK 10f3f813b251d16c86d0b41bbdd7b7ab4a22e00d
stickies-v:
ACK 10f3f813b251d16c86d0b41bbdd7b7ab4a22e00d
Tree-SHA512: 3e1c527dac06afb4c8e1e481055211f69aa0ed769ac242ed610d23d470bbc0c062227034d01876ba4a5fa836e953fb001e8b0d6bc026069d372d34b8a031fb25
45a5fcb165081f38ef90944dd31c5e3107aa03dc http: bugfix: track closed connection (stickies-v)
752a456fa839c796a37eb5db0011910f799748ee http: log connection instead of request count (stickies-v)
ae86adabe44cbb8328d9290ad809803b86df8a07 http: refactor: use encapsulated HTTPRequestTracker (stickies-v)
f31899d19a0333e87c3690b3d3c2b574abb357fa gui: macOS, make appMenuBar part of the main app window (furszy)
64ffa9423197c2dad2f5c5d812e1b17d6b9030f0 gui: macOS, do not process dock icon actions during shutdown (furszy)
e270f3f8578d933e8f219b3381ac105185b3b707 depends: fix unusable memory_resource in macos qt build (fanquake)
a6683945ca38752875e82dddccba075195ec61a6 build, macos: Fix `qt` package build with new Xcode 15 linker (Hennadii Stepanov)
b3517cb1b54e040f3167abdd77095003e525b5d1 test: Test loading wallets with conflicts without a chain (Andrew Chow)
d63478cb502de8345db2525f47abc1e9ef788733 wallet: Check last block and conflict height are valid in MarkConflicted (Andrew Chow)
5e51a9cc7246700612887e78d1cfafc351529a9b ci: Nuke Android APK task, Use credits for tsan (MarcoFalke)
910c36253e4ff5a21de47e082071ce903f74a2dd test: ensure old fee_estimate.dat not read on restart and flushed (ismaelsadeeq)
37764d3300669e64d9b8549a6a4ea78bfba6b1b5 tx fees, policy: read stale fee estimates with a regtest-only option (ismaelsadeeq)
16bb9161fabee70edac4c3e64b1ff4b47945cbdd tx fees, policy: do not read estimates of old fee_estimates.dat (ismaelsadeeq)
c4dd5989b36e6da62dedb4e0bfceade75abb0ac5 tx fees, policy: periodically flush fee estimates to fee_estimates.dat (ismaelsadeeq)
c36770cefd07c5263d366e7378ac9701f5679816 test: wallet, verify migration doesn't crash for an invalid script (furszy)
0d2a33e05c056fbc9834b532cb50621e622f14c9 wallet: disallow migration of invalid or not-watched scripts (furszy)
2c51a07c085b25246effa91a1f5f17dac560ff58 Do not use std::vector = {} to release memory (Pieter Wuille)
Pull request description:
Further backports for the `25.x` branch. Currently:
* https://github.com/bitcoin/bitcoin/pull/27622
* https://github.com/bitcoin/bitcoin/pull/27834
* https://github.com/bitcoin/bitcoin/pull/28125
* https://github.com/bitcoin/bitcoin/pull/28452
* https://github.com/bitcoin/bitcoin/pull/28542
* https://github.com/bitcoin/bitcoin/pull/28543
* https://github.com/bitcoin/bitcoin/pull/28551
* https://github.com/bitcoin/bitcoin/pull/28571
* https://github.com/bitcoin-core/gui/pull/751
ACKs for top commit:
hebasto:
re-ACK 45a5fcb165081f38ef90944dd31c5e3107aa03dc, only #28551 has been backported with since my recent [review](https://github.com/bitcoin/bitcoin/pull/28487#pullrequestreview-1655584132).
dergoegge:
reACK 45a5fcb165081f38ef90944dd31c5e3107aa03dc
willcl-ark:
reACK 45a5fcb165081f38ef90944dd31c5e3107aa03dc
Tree-SHA512: 0f5807aa364b7c2a2039fef11d5cd5e168372c3bf5b0e941350fcd92e7db4a1662801b97bb4f68e29788c77d24bbf97385a483c4501ca72d93fa25327d5694fa
It is possible that the client disconnects before the request is
handled. In those cases, evhttp_request_set_on_complete_cb is never
called, which means that on shutdown the server we'll keep waiting
endlessly.
By adding evhttp_connection_set_closecb, libevent automatically
cleans up those dead connections at latest when we shutdown, and
depending on the libevent version already at the moment of remote
client disconnect. In both cases, the bug is fixed.
Github-Pull: #28551
Rebased-From: 68f23f57d77bc172ed39ecdd4d2d5cd5e13cf483
There is no significant benefit in logging the request count instead
of the connection count. Reduces amount of code and computational
complexity.
Github-Pull: #28551
Rebased-From: 084d0372311e658a486622f720d2b827d8416591
Introduces and uses a HTTPRequestTracker class to keep track of
how many HTTP requests are currently active, so we don't stop the
server before they're all handled.
This has two purposes:
1. In a next commit, allows us to untrack all requests associated
with a connection without running into lifetime issues of the
connection living longer than the request
(see https://github.com/bitcoin/bitcoin/pull/27909#discussion_r1265614783)
2. Improve encapsulation by making the mutex and cv internal members,
and exposing just the WaitUntilEmpty() method that can be safely
used.
Github-Pull: #28551
Rebased-From: 41f9027813f849a9fd6a1479bbb74b9037990c3c
By moving the appMenuBar destruction responsibility to the QT
framework, we ensure the disconnection of the submenus signals
prior to the destruction of the main app window.
The standalone menu bar may have served a purpose in earlier
versions when it didn't contain actions that directly open
specific screens within the main application window. However,
at present, all the actions within the appMenuBar lead to the
opening of screens within the main app window. So, the absence
of a main app window makes these actions essentially pointless.
Github-Pull: gui#751
Rebased-From: bae209e3879fa099302d3b211362c49bbbfbdd14
As the 'QMenuBar' is created without a parent window in MacOS, the
app crashes when the user presses the shutdown button and, right
after it, triggers any action in the menu bar.
This happens because the QMenuBar is manually deleted in the
BitcoinGUI destructor but the events attached to it children
actions are not disconnected, so QActions events such us the
'QMenu::aboutToShow' could try to access null pointers.
Instead of guarding every single QAction pointer inside the
QMenu::aboutToShow slot, or manually disconnecting all
registered events in the destructor, we can check if a
shutdown was requested and discard the event.
The 'node' field is a ref whose memory is held by the
main application class, so it is safe to use here. Events
are disconnected prior destructing the main application object.
Furthermore, the 'MacDockIconHandler::dockIconClicked' signal
can make the app crash during shutdown for the very same
reason. The 'show()' call triggers the 'QApplication::focusWindowChanged'
event, which is connected to the 'minimize_action' QAction,
which is also part of the app menu bar, which could no longer exist.
Github-Pull: gui#751
Rebased-From: e14cc8fc69cb3e3a98076fbb23a94eba7873368a