From c21024fd86eb96e0a18c7c50acede2467ac70103 Mon Sep 17 00:00:00 2001 From: fanquake Date: Mon, 11 Dec 2023 15:51:26 +0000 Subject: [PATCH 1/5] doc: add historical release notes for 25.1 --- doc/release-notes/release-notes-25.1.md | 108 ++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 doc/release-notes/release-notes-25.1.md diff --git a/doc/release-notes/release-notes-25.1.md b/doc/release-notes/release-notes-25.1.md new file mode 100644 index 0000000000..bfdbee4e76 --- /dev/null +++ b/doc/release-notes/release-notes-25.1.md @@ -0,0 +1,108 @@ +25.1 Release Notes +================== + +Bitcoin Core version 25.1 is now available from: + + + +This release includes various bug fixes and performance +improvements, as well as updated translations. + +Please report bugs using the issue tracker at GitHub: + + + +To receive security and update notifications, please subscribe to: + + + +How to Upgrade +============== + +If you are running an older version, shut it down. Wait until it has completely +shut down (which might take a few minutes in some cases), then run the +installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on macOS) +or `bitcoind`/`bitcoin-qt` (on Linux). + +Upgrading directly from a version of Bitcoin Core that has reached its EOL is +possible, but it might take some time if the data directory needs to be migrated. Old +wallet versions of Bitcoin Core are generally supported. + +Compatibility +============== + +Bitcoin Core is supported and extensively tested on operating systems +using the Linux kernel, macOS 10.15+, and Windows 7 and newer. Bitcoin +Core should also work on most other Unix-like systems but is not as +frequently tested on them. It is not recommended to use Bitcoin Core on +unsupported systems. + +Notable changes +=============== + +### P2P + +- #27626 Parallel compact block downloads, take 3 +- #27743 p2p: Unconditionally return when compact block status == READ_STATUS_FAILED + +### Fees + +- #27622 Fee estimation: avoid serving stale fee estimate + +### RPC + +- #27727 rpc: Fix invalid bech32 address handling + +### Rest + +- #27853 rest: fix crash error when calling /deploymentinfo +- #28551 http: bugfix: allow server shutdown in case of remote client disconnection + +### Wallet + +- #28038 wallet: address book migration bug fixes +- #28067 descriptors: do not return top-level only funcs as sub descriptors +- #28125 wallet: bugfix, disallow migration of invalid scripts +- #28542 wallet: Check for uninitialized last processed and conflicting heights in MarkConflicted + +### Build + +- #27724 build: disable boost multi index safe mode in debug mode +- #28097 depends: xcb-proto 1.15.2 +- #28543 build, macos: Fix qt package build with new Xcode 15 linker +- #28571 depends: fix unusable memory_resource in macos qt build + +### Gui + +- gui#751 macOS, do not process actions during shutdown + +### Miscellaneous + +- #28452 Do not use std::vector = {} to release memory + +### CI + +- #27777 ci: Prune dangling images on RESTART_CI_DOCKER_BEFORE_RUN +- #27834 ci: Nuke Android APK task, Use credits for tsan +- #27844 ci: Use podman stop over podman kill +- #27886 ci: Switch to amd64 container in "ARM" task + +Credits +======= + +Thanks to everyone who directly contributed to this release: + +- Abubakar Sadiq Ismail +- Andrew Chow +- Bruno Garcia +- Gregory Sanders +- Hennadii Stepanov +- MacroFake +- Matias Furszyfer +- Michael Ford +- Pieter Wuille +- stickies-v +- Will Clark + +As well as to everyone that helped with translations on +[Transifex](https://www.transifex.com/bitcoin/bitcoin/). \ No newline at end of file From b86285df1f949c44445165040dfb94a560c3858c Mon Sep 17 00:00:00 2001 From: Sebastian Falbesoner Date: Mon, 30 Oct 2023 22:06:02 +0100 Subject: [PATCH 2/5] gui: fix crash on selecting "Mask values" in transaction view 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 --- src/qt/transactionview.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp index 351305f3fa..0641661fcb 100644 --- a/src/qt/transactionview.cpp +++ b/src/qt/transactionview.cpp @@ -532,6 +532,9 @@ void TransactionView::showDetails() TransactionDescDialog *dlg = new TransactionDescDialog(selection.at(0)); dlg->setAttribute(Qt::WA_DeleteOnClose); m_opened_dialogs.append(dlg); + connect(dlg, &QObject::destroyed, [this, dlg] { + m_opened_dialogs.removeOne(dlg); + }); dlg->show(); } } From 041228d293a24c52631e011fc002349337d0645e Mon Sep 17 00:00:00 2001 From: Martin Zumsande Date: Tue, 5 Dec 2023 13:07:39 -0500 Subject: [PATCH 3/5] rpc: fix getrawtransaction segfault The crash would happen when querying a mempool transaction with verbosity=2, while pruning. Github-Pull: #29003 Rebased-From: 494a926d05df44b60b3bc1145ad2a64acf96f61b --- src/rpc/rawtransaction.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/rpc/rawtransaction.cpp b/src/rpc/rawtransaction.cpp index 21d49fda9d..4ab8a8661b 100644 --- a/src/rpc/rawtransaction.cpp +++ b/src/rpc/rawtransaction.cpp @@ -310,7 +310,7 @@ static RPCHelpMan getrawtransaction() LOCK(cs_main); blockindex = chainman.m_blockman.LookupBlockIndex(hash_block); } - if (verbosity == 1) { + if (verbosity == 1 || !blockindex) { TxToJSON(*tx, hash_block, result, chainman.ActiveChainstate()); return result; } @@ -319,8 +319,7 @@ static RPCHelpMan getrawtransaction() CBlock block; const bool is_block_pruned{WITH_LOCK(cs_main, return chainman.m_blockman.IsBlockPruned(blockindex))}; - if (tx->IsCoinBase() || - !blockindex || is_block_pruned || + if (tx->IsCoinBase() || is_block_pruned || !(UndoReadFromDisk(blockUndo, blockindex) && ReadBlockFromDisk(block, blockindex, Params().GetConsensus()))) { TxToJSON(*tx, hash_block, result, chainman.ActiveChainstate()); return result; From 31e1e035be0598a43c573fe4cf49dea8351dc5f6 Mon Sep 17 00:00:00 2001 From: Martin Zumsande Date: Tue, 5 Dec 2023 16:36:43 -0500 Subject: [PATCH 4/5] test: add regression test for the getrawtransaction segfault This fails on master without the previous commit. Github-Pull: #29003 Rebased-From: 9075a446461ccbc446d21af778aac50b604f39b3 --- test/functional/rpc_rawtransaction.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/test/functional/rpc_rawtransaction.py b/test/functional/rpc_rawtransaction.py index 2395935620..c12865b5e3 100755 --- a/test/functional/rpc_rawtransaction.py +++ b/test/functional/rpc_rawtransaction.py @@ -32,6 +32,7 @@ from test_framework.script import ( from test_framework.test_framework import BitcoinTestFramework from test_framework.util import ( assert_equal, + assert_greater_than, assert_raises_rpc_error, ) from test_framework.wallet import ( @@ -70,7 +71,7 @@ class RawTransactionsTest(BitcoinTestFramework): self.extra_args = [ ["-txindex"], ["-txindex"], - [], + ["-fastprune", "-prune=1"], ] # whitelist all peers to speed up tx relay / mempool sync for args in self.extra_args: @@ -85,7 +86,6 @@ class RawTransactionsTest(BitcoinTestFramework): self.wallet = MiniWallet(self.nodes[0]) self.getrawtransaction_tests() - self.getrawtransaction_verbosity_tests() self.createrawtransaction_tests() self.sendrawtransaction_tests() self.sendrawtransaction_testmempoolaccept_tests() @@ -94,6 +94,8 @@ class RawTransactionsTest(BitcoinTestFramework): if self.is_specified_wallet_compiled() and not self.options.descriptors: self.import_deterministic_coinbase_privkeys() self.raw_multisig_transaction_legacy_tests() + self.getrawtransaction_verbosity_tests() + def getrawtransaction_tests(self): tx = self.wallet.send_self_transfer(from_node=self.nodes[0]) @@ -243,6 +245,13 @@ class RawTransactionsTest(BitcoinTestFramework): coin_base = self.nodes[1].getblock(block1)['tx'][0] gottx = self.nodes[1].getrawtransaction(txid=coin_base, verbosity=2, blockhash=block1) assert 'fee' not in gottx + # check that verbosity 2 for a mempool tx will fallback to verbosity 1 + # Do this with a pruned chain, as a regression test for https://github.com/bitcoin/bitcoin/pull/29003 + self.generate(self.nodes[2], 400) + assert_greater_than(self.nodes[2].pruneblockchain(250), 0) + mempool_tx = self.wallet.send_self_transfer(from_node=self.nodes[2])['txid'] + gottx = self.nodes[2].getrawtransaction(txid=mempool_tx, verbosity=2) + assert 'fee' not in gottx def createrawtransaction_tests(self): self.log.info("Test createrawtransaction") From 53bbda51141e48730b95913c6ae8e1ea50578fbb Mon Sep 17 00:00:00 2001 From: fanquake Date: Wed, 1 Nov 2023 13:23:02 +0000 Subject: [PATCH 5/5] doc: update release notes for 25.x --- doc/release-notes.md | 64 ++++++-------------------------------------- 1 file changed, 8 insertions(+), 56 deletions(-) diff --git a/doc/release-notes.md b/doc/release-notes.md index 7168d36875..fdca90f36f 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -1,9 +1,9 @@ -25.1 Release Notes +25.x Release Notes ================== -Bitcoin Core version 25.1 is now available from: +Bitcoin Core version 25.x is now available from: - + This release includes various bug fixes and performance improvements, as well as updated translations. @@ -40,69 +40,21 @@ unsupported systems. Notable changes =============== -### P2P +### Gui -- #27626 Parallel compact block downloads, take 3 -- #27743 p2p: Unconditionally return when compact block status == READ_STATUS_FAILED - -### Fees - -- #27622 Fee estimation: avoid serving stale fee estimate +- gui#774 Fix crash on selecting "Mask values" in transaction view ### RPC -- #27727 rpc: Fix invalid bech32 address handling - -### Rest - -- #27853 rest: fix crash error when calling /deploymentinfo -- #28551 http: bugfix: allow server shutdown in case of remote client disconnection - -### Wallet - -- #28038 wallet: address book migration bug fixes -- #28067 descriptors: do not return top-level only funcs as sub descriptors -- #28125 wallet: bugfix, disallow migration of invalid scripts -- #28542 wallet: Check for uninitialized last processed and conflicting heights in MarkConflicted - -### Build - -- #27724 build: disable boost multi index safe mode in debug mode -- #28097 depends: xcb-proto 1.15.2 -- #28543 build, macos: Fix qt package build with new Xcode 15 linker -- #28571 depends: fix unusable memory_resource in macos qt build - -### Gui - -- gui#751 macOS, do not process actions during shutdown - -### Miscellaneous - -- #28452 Do not use std::vector = {} to release memory - -### CI - -- #27777 ci: Prune dangling images on RESTART_CI_DOCKER_BEFORE_RUN -- #27834 ci: Nuke Android APK task, Use credits for tsan -- #27844 ci: Use podman stop over podman kill -- #27886 ci: Switch to amd64 container in "ARM" task +- #29003 rpc: fix getrawtransaction segfault Credits ======= Thanks to everyone who directly contributed to this release: -- Abubakar Sadiq Ismail -- Andrew Chow -- Bruno Garcia -- Gregory Sanders -- Hennadii Stepanov -- MacroFake -- Matias Furszyfer -- Michael Ford -- Pieter Wuille -- stickies-v -- Will Clark +- Martin Zumsande +- Sebastian Falbesoner As well as to everyone that helped with translations on [Transifex](https://www.transifex.com/bitcoin/bitcoin/).