Commit Graph

44199 Commits

Author SHA1 Message Date
fanquake
a0d1f69b55 doc: update release notes for 29.x 2025-05-20 12:30:25 +01:00
Ava Chow
6c0f26d3bd test: check that creating a wallet does not log version info
Github-Pull: #32553
Rebased-From: 4b2cd0b41f
2025-05-20 12:29:25 +01:00
Ava Chow
e685b4eca2 test: Check that the correct versions are logged on wallet load
Github-Pull: #32553
Rebased-From: 39a483c8e9
2025-05-20 12:29:21 +01:00
Ava Chow
25aa15ee7f walletdb: Log the wallet version after it has been read from disk
Logging the wallet version before anything has been read from disk results
in the wrong version being logged.

Also split the last client version logging as it may not always be
present to be logged.

Github-Pull: #32553
Rebased-From: 359ecd3704
2025-05-20 12:29:18 +01:00
Martin Zumsande
cf034172bf test: fix another intermittent failure in wallet_basic.py
During init, the test framework will start using rpc after the
mempool was loaded. It will not wait for postInitProcess or
outstanding transactionAddedToMempool notifications, leading to
a possible race, in which listunspent is being called while the
tx is still in Inactive status. Prevent this by processing
outstanding notifications.

Github-Pull: #32483
Rebased-From: e7ad86e1ca
2025-05-14 13:26:53 +01:00
Martin Zumsande
c966158426 test: Fix intermittent failure in wallet_basic.py
There could be a race with outstanding TxAddedToMempool notifications
being applied to the soon-to-be created wallet.

Fixes an intermittent timeout reproducable by adding a sleep to
AddToWallet.

Github-Pull: #32483
Rebased-From: 07350e204d
2025-05-14 13:26:48 +01:00
enoch
6c4e3de2ac test: Use uninvolved pruned node in feature_pruning undo test
After fixing the nTime variable name, the test_pruneheight_undo_presence
test began failing because node 2, which is involved in reorg testing,
could be on a different chain than other nodes. This caused failures
when trying to fetch blocks from other nodes that didn't recognize
node 2's chain.

Switch to using node 5 instead, which is also a pruned node but isn't
involved in reorg testing, ensuring it stays on the same chain as the
other nodes. This allows the block fetching to work as intended in the
test.

Github-Pull: #32312
Rebased-From: 2aa63d511a
2025-05-14 10:01:32 +01:00
enoch
edd4073d70 test: Fix nTimes typo in feature_pruning test
Fix incorrect variable name in comment (nTimes -> nTime) in
feature_pruning.py. This typo caused the test to always reset
mine_large_blocks.nTime to 0, rather than only on the first run
as intended.

Github-Pull: #32312
Rebased-From: 772ba7f9ce
2025-05-14 10:01:26 +01:00
Hennadii Stepanov
cc2fcdfc5e cmake: Allow WITH_DBUS on all Unix-like systems
This change makes the `WITH_DBUS` option available on all Unix-like
systems, not just Linux, thereby fixing a regression that was
overlooked during the migration from Autotools.

Note: Enabling D-Bus support on macOS still makes no sense, since the
`Notificator` class uses the User Notification Center regardless.

Github-Pull: #32469
Rebased-From: 5b7ed460c7
2025-05-12 14:25:19 +01:00
fanquake
caec3cc41b crypto: disable ASan for sha256_sse4 with Clang
This can alsofail to compile when optimisations are being used, see:
https://github.com/bitcoin/bitcoin/issues/31913.
So disable just ASan for this function under any optimisation level.

Github-Pull: #32437
Rebased-From: 4e8ab5e00f
2025-05-12 14:25:16 +01:00
William Casarin
fabf4ff237 tracing: fix invalid argument in mempool_monitor
The mempool_monitor tracing tool is incorrectly reading the reason
as the first argument. Fix this!

Github-Pull: #32454
Rebased-From: 31c5ebc400
2025-05-09 09:31:38 +01:00
Hennadii Stepanov
f9d2c67a0c cmake: Respect user-provided configuration-specific flags
Github-Pull: #32356
Rebased-From: edde96376a
2025-05-08 16:35:14 +01:00
monlovesmango
6ed087dede doc: Fix test_bitcoin path
This commit fixes a couple command paths for interacting with the
test_bitcoin binary within the Unit Test documentation.

Github-Pull: #32389
Rebased-From: 6cbc28b8dd
2025-05-06 18:04:28 +01:00
monlovesmango
2f6c802b54 doc: Fix fuzz test_runner.py path
This commit fixes the path listed in the documentation for the fuzz
testing test_runner.py. Previously the --help option worked but running
fuzz tests from the documented path did not.

Github-Pull: #32353
Rebased-From: 61f238e84a
2025-05-06 18:04:28 +01:00
laanwj
f4d9546425 qt: Replace stray tfm::format to cerr with qWarning
GUI warnings should go to the log, not to the console (which may not be
connected at all).

Github-Pull: gui#868
Rebased-From: edd46566bd
2025-05-06 18:04:28 +01:00
furszy
5aa4956cd3 gui: crash fix, disconnect numBlocksChanged() signal during shutdown
The crash stems from the order of the shutdown procedure:
We first unset the client model, then destroy the wallet controller—but we leave
the internal wallet models ('m_wallets') untouched for a brief period. As a result,
there’s a point in time where views still have connected signals and access to
wallet models that are not connected to any wallet controller.
Now.. since the clientModel is only replaced with nullptr locally and not destroyed
yet, signals like numBlocksChanged can still emit. Thus, when wallet views receive
them, they see a non-null wallet model ptr, and proceed to call backend functions
from a model that is being torn down.

As the shutdown procedure begins by unsetting clientModel from all views. It’s safe
to ignore events when clientModel is nullptr.

Github-Pull: gui#864
Rebased-From: 71656bdfaa
2025-05-06 18:04:28 +01:00
MarcoFalke
3665310808 scripted-diff: Use bpf_cflags
-BEGIN VERIFY SCRIPT-

 ren() { sed --regexp-extended -i "s/$1/$2/g" $( git grep --extended-regexp -l "$1" ) ; }

 ren 'cflags=\["-Wno-error=implicit-function-declaration"\]' 'cflags=bpf_cflags()'

-END VERIFY SCRIPT-

Github-Pull: #32336
Rebased-From: facb9b327b
2025-05-06 18:04:28 +01:00
MarcoFalke
4ed5c34abb test: Add imports for util bpf_cflags
This is required for the next commit.

Github-Pull: #32336
Rebased-From: fa0c1baaf8
2025-05-06 18:04:27 +01:00
MarcoFalke
3dbd2b3d17 refactor: Remove spurious virtual from final ~CZMQNotificationInterface
Github-Pull: #32187
Rebased-From: fa69c42fdf
2025-05-06 18:04:27 +01:00
Hennadii Stepanov
64552c83b2 ci: Add workaround for vcpkg's libevent package
This change is necessary for Windows GHA images, which provide
CMake >= 4.0.

Github-Pull: #32184
Rebased-From: ef00a28414
2025-05-06 18:04:27 +01:00
Brandon Odiwuor
85f3e1de68 test: Handle empty string returned by CLI as None in RPC tests
Github-Pull: #32286
Rebased-From: a4041c77f0
2025-05-06 18:04:27 +01:00
laanwj
ca70d5cb25 Remove support for RNDR/RNDRRS for aarch64 on Linux
This hardware feature is

- rarely supported on SoCs (and broken on like half of the chips that support it in the first place) (#31817)
- apparently not compiled into the release binary (https://github.com/bitcoin/bitcoin/issues/31817#issuecomment-2795885962)
- hard to test in CI, due to unavailable of hardware

Better to remove it.

This reverts commit aee5404e02.

Closes #31817.

Github-Pull: #32248
Rebased-From: 7749d929a0
2025-05-06 18:04:27 +01:00
merge-script
3fad438b83 Merge bitcoin/bitcoin#32352: [29.x] qt: 29.1 translations update
fc60337733 qt: 29.1 translations update (Hennadii Stepanov)

Pull request description:

  This PR fetches the recent translation updates from Transifex.

  Closes https://github.com/bitcoin/bitcoin/issues/32295.

  **Notes for reviewers:**

  1. "fr_CM" and "fr_LU" have been dropped as part of [phasing out of territory-specific translations](https://app.transifex.com/bitcoin/communication/d:402657d1-6254-4ce9-8d26-e7827652c627/?q=project%3Abitcoin).

  2. The translations for the following languages, which appear to be the result of a mistake or an act of vandalism, have been discarded (also see https://github.com/bitcoin/bitcoin/pull/32004):
      - Czech (cs)
      - Danish (da)
      - Dutch (nl)
      - Vietnamese (vi)

  3. Update for Silesian (szl) has been discarded as malicious.

ACKs for top commit:
  laanwj:
    ACK fc60337733

Tree-SHA512: 0003a3ec67553f046ac8f98f61fd799cdcdac731f417e936af6782f8559270cc4f4fa40ffd8de5b40d7988d674dbac7eab73879aec974433bdf61a7790efd2a4
2025-05-06 18:03:01 +01:00
Hennadii Stepanov
fc60337733 qt: 29.1 translations update 2025-05-02 11:43:10 +01:00
merge-script
f490f5562d Merge bitcoin/bitcoin#32252: [29.x] doc: minor rel notes changes
87e53781f7 doc: minor rel notes changes (fanquake)

Pull request description:

  Remove two unused headers.
  Remove the empty-template, as point releases will modify `release-notes.md`.

ACKs for top commit:
  jonatack:
    LGTM ACK 87e53781f7
  janb84:
    ACK [87e5378](87e53781f7)

Tree-SHA512: 69ff0d7863c1598ab2b4daf2a7f9ca3edae513a7d5ebb85aa1b468150cfd17da2f503ac0a41dc77fe04c3670cb7d58df46b00837d08aad624f024756f575fca1
v29.0
2025-04-11 16:20:13 +01:00
fanquake
87e53781f7 doc: minor rel notes changes
Remove two unused headers.
Remove the empty-template, as point releases will modify release-notes.md.
2025-04-11 16:00:42 +01:00
merge-script
56ed476a29 Merge bitcoin/bitcoin#32241: [29.x] 29.0 final changes
977db54233 [doc] update man pages for 29.0 (glozow)
190e718e83 [build] bump to 29.0 final (glozow)
50108104d7 [doc] copy over Release Notes draft from wiki (glozow)

Pull request description:

  There weren't any reports from rc2 and rc3 binaries have been up since April 2 (1 week ago).

ACKs for top commit:
  hebasto:
    ACK 977db54233.
  janb84:
    ACK [977db54](977db54233)
  laanwj:
    ACK 977db54233

Tree-SHA512: f0dee957c56a7b24cc361b0450efeaaad5ead6401ba649f8af6cf5cb464fea4357e1eaedaaa80accdeb18d47321a604979c43be57e14aa3ae5603d083e7df250
2025-04-11 15:55:48 +01:00
glozow
977db54233 [doc] update man pages for 29.0 2025-04-09 11:34:37 -04:00
glozow
190e718e83 [build] bump to 29.0 final 2025-04-09 11:34:37 -04:00
glozow
50108104d7 [doc] copy over Release Notes draft from wiki 2025-04-09 11:34:37 -04:00
merge-script
1344d3bd0f Merge bitcoin/bitcoin#32136: [29.x] backports and 29.0rc3
f80ab9a5d8 [doc] update man pages for 29.0rc3 (glozow)
7c05ef5673 [build] bump to 29.0rc3 (glozow)
c0756b758f depends: set CMAKE_*_COMPILER_TARGET in toolchain (fanquake)
477345207b cmake: Add `NO_CACHE_IF_FAILED` option for checking linker flags (Hennadii Stepanov)
7bc7af9951 fuzz: extract unsequenced operations with side-effects (Lőrinc)
288163ea0f fuzz: Fix off-by-one in package_rbf target (MarcoFalke)
a3060483fa test: avoid disk space warning for non-regtest (Sjors Provoost)

Pull request description:

  Backports + final changes for 29.0rc3.

  Backports:
  - #32057
  - #32122
  - #32141
  - #32027
  - #31849

ACKs for top commit:
  hebasto:
    ACK f80ab9a5d8, I've verified back-ports locally and reviewed release related changes.
  fanquake:
    ACK f80ab9a5d8

Tree-SHA512: 15c882eac98825c41859859af1621e63a5b9d98f3b492c451c14f2d2232220dfa8d1ef933adae773918e188c6ade085f254f2853ff078bf1f99b8cd77facb182
v29.0rc3
2025-04-01 19:59:46 +08:00
glozow
f80ab9a5d8 [doc] update man pages for 29.0rc3 2025-03-28 14:56:29 -04:00
glozow
7c05ef5673 [build] bump to 29.0rc3 2025-03-28 14:37:09 -04:00
fanquake
c0756b758f depends: set CMAKE_*_COMPILER_TARGET in toolchain
According to the CMake docs, this is the correct way to setup a
toolchain file for cross-compilation using Clang. See
https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#cross-compiling-using-clang

Internally it looks like CMake will only take this variable into account
if it detects the compiler to be Clang, so this shouldn't effect other
builds, but in the case of our Apple cross builds, we'd end up with a
duplicated `--target=arm64-apple-darwin` on the compiler line, given we
are already setting `--target` for Darwin builds.

Would fix #31748.

Github-Pull: #31849
Rebased-From: 963355037f
2025-03-28 14:24:37 -04:00
Hennadii Stepanov
477345207b cmake: Add NO_CACHE_IF_FAILED option for checking linker flags
Use it for checking `-fsanitize`.

This change improves the user experience when the configuration step
fails due to a missing library. Now, there is no need to manually clean
the CMake cache after installing the required library.

Github-Pull: #32027
Rebased-From: 52ac17757e
2025-03-28 14:24:09 -04:00
Lőrinc
7bc7af9951 fuzz: extract unsequenced operations with side-effects
https://github.com/bitcoin/bitcoin/pull/30746#discussion_r1817851827 introduced an unsequenced operations with side-effects - which is undefined behavior, i.e. the right hand side can be evaluated before the left hand side, which happens to mutate it.

Tried:
```
clang++ --analyze -std=c++20 -I./src -I./src/test -I./src/test/fuzz src/test/fuzz/base_encode_decode.cpp src/psbt.cpp
```
but it didn't warn about UB.

Grepped for similar ones, but could find any other one in the codebase:
> grep -rnE --include='*.cpp' --include='*.h' '\b(\w+)\(([^)]*\b(\w+)\b[^)]*)\)\s*==\s*\3\.' .
```
./src/test/arith_uint256_tests.cpp:373:    BOOST_CHECK(R1L.GetHex() == R1L.ToString());
./src/test/arith_uint256_tests.cpp:374:    BOOST_CHECK(R2L.GetHex() == R2L.ToString());
./src/test/arith_uint256_tests.cpp:375:    BOOST_CHECK(OneL.GetHex() == OneL.ToString());
./src/test/arith_uint256_tests.cpp:376:    BOOST_CHECK(MaxL.GetHex() == MaxL.ToString());
./src/test/fuzz/cluster_linearize.cpp:565:        assert(depgraph.FeeRate(best_anc.transactions) == best_anc.feerate);
./src/test/fuzz/cluster_linearize.cpp:646:        assert(depgraph.FeeRate(found.transactions) == found.feerate);
./src/test/fuzz/cluster_linearize.cpp:765:            assert(depgraph.FeeRate(chunk_info.transactions) == chunk_info.feerate);
./src/test/fuzz/base_encode_decode.cpp:95:    assert(DecodeBase64PSBT(psbt, random_string, error) == error.empty());
./src/test/fuzz/key.cpp:102:        assert(pubkey.data() == pubkey.begin());
./src/test/skiplist_tests.cpp:42:        BOOST_CHECK(vIndex[from].GetAncestor(0) == vIndex.data());
./src/script/signingprovider.cpp:535:                   ComputeTapbranchHash(node.sub[1]->hash, node.sub[1]->hash) == node.hash) {
./src/pubkey.h:78:      return vch.size() > 0 && GetLen(vch[0]) == vch.size();
./src/cluster_linearize.h:881:            Assume(elem.inc.feerate.IsEmpty() == elem.pot_feerate.IsEmpty());
```

Hodlinator deduced the UB on Windows in https://github.com/bitcoin/bitcoin/issues/32135#issuecomment-2751723855

Github-Pull: #32141
Rebased-From: b1de59e896

Co-authored-by: Hodlinator <172445034+hodlinator@users.noreply.github.com>
2025-03-28 14:23:42 -04:00
MarcoFalke
288163ea0f fuzz: Fix off-by-one in package_rbf target
Github-Pull: #32122
Rebased-From: fa5674c264
2025-03-25 16:58:12 -04:00
Sjors Provoost
a3060483fa test: avoid disk space warning for non-regtest
feature_config_args.py incorrectly assumed that its testnet4 node
would not log a disk space warning.

0683b8ebf3 increased m_assumed_blockchain_size
on testnet4 from 1 to 11 GiB which triggers this bug on more
systems, e.g. a RAM disk.

Prevent the warning by setting -prune for these nodes.

Fix the same issue in feature_signet.py

Github-Pull: #32057
Rebased-From: 20fe41e9e8
2025-03-25 10:31:08 -04:00
merge-script
d6db87165c Merge bitcoin/bitcoin#32062: [29.x] backports and rc2
74df31cb0b [doc] update example bitcoin.conf with missing options (glozow)
8082f88d1a [doc] update man pages for 29.0rc2 (glozow)
472d582bfe [build] bump to 29.0rc2 (glozow)
a4c30bd00a qt: doc: adapt outdated binary paths to CMake changes (Sebastian Falbesoner)
4e438d326e build: use make < 3.82 syntax for define directive (Sjors Provoost)
7ff0b02161 build: Remove manpages when making MacOS app (Ava Chow)
5ebcb59fdb test: fix intermittent failure in p2p_orphan_handling.py (Martin Zumsande)
458655bca8 fuzz: make sure DecodeBase58(Check) is called with valid values more often (Lőrinc)
15ecae31a8 fuzz: Always restrict base conversion input lengths (Lőrinc)
80c5d57bd1 contrib: Fix `gen-bitcoin-conf.sh`. (David Gumberg)

Pull request description:

  backports:
  - #32049
  - #32063
  - #32064
  - #32070
  - #31917

ACKs for top commit:
  Sjors:
    ACK 74df31cb0b
  hebasto:
    ACK 74df31cb0b, I have reviewed the code and it looks OK.
  ismaelsadeeq:
    Code review ACK 74df31cb0b

Tree-SHA512: df4ef832a03c9c3f89d30d3f65d81b7c7e4793d2cad8a269f1ff221454a4b0b05e06109f4556926c1c4f7fcbd2537052b4d58b4b3911dfcfc35726c600b587d9
v29.0rc2
2025-03-18 08:38:18 +08:00
glozow
74df31cb0b [doc] update example bitcoin.conf with missing options 2025-03-17 06:16:22 -04:00
glozow
8082f88d1a [doc] update man pages for 29.0rc2 2025-03-17 06:16:22 -04:00
glozow
472d582bfe [build] bump to 29.0rc2 2025-03-17 06:16:22 -04:00
Sebastian Falbesoner
a4c30bd00a qt: doc: adapt outdated binary paths to CMake changes
Github-Pull: bitcoin-core/gui#858
Rebased-From: 7ebc458a8c
2025-03-17 06:16:03 -04:00
Sjors Provoost
4e438d326e build: use make < 3.82 syntax for define directive
From the GNU make 3.82 release announcement:

* The 'define' make directive now allows a variable assignment operator
  after the variable name, to allow for simple, conditional, or appending
  multi-line variable assignment.

macOS ships with 3.81. This caused the multiprocess config options
to be ignored.

Fixes #32068

Github-Pull: #32070
Rebased-From: 9157d9e449

Co-authored-by: Ryan Ofsky <ryan@ofsky.org>
2025-03-16 22:07:20 -04:00
Ava Chow
7ff0b02161 build: Remove manpages when making MacOS app
Github-Pull: #32064
Rebased-From: 80b5e7f2cb
2025-03-16 22:07:20 -04:00
Martin Zumsande
5ebcb59fdb test: fix intermittent failure in p2p_orphan_handling.py
If we bump the mocktime before the node has successfully disconnected
the peer, the requests for both parents could be spread over
two GETDATAS, which would make the test fail.

Github-Pull: #32063
Rebased-From: 02942056fd
2025-03-16 22:07:20 -04:00
Lőrinc
458655bca8 fuzz: make sure DecodeBase58(Check) is called with valid values more often
In Base58 fuzz the two roundtrips are merged now, the new `decode_input` switches between a completely random input and a valid encoded one, to make sure the decoding passes more often.
The `max_ret_len` can also exceed the original length now and is being validated more thoroughly.

Github-Pull: #31917
Rebased-From: d5537c18a9

Co-authored-by: maflcko <6399679+maflcko@users.noreply.github.com>
Co-authored-by: marcofleon <marleo23@proton.me>
2025-03-16 22:07:20 -04:00
Lőrinc
15ecae31a8 fuzz: Always restrict base conversion input lengths
They seem to cause timeouts:
> Issue 397734700: bitcoin-core:base58check_encode_decode: Timeout in base58check_encode_decode

The `encoded_string.empty()` check was corrected here to `decoded.empty()` to make sure the `(0, decoded.size() - 1)` range is always valid.

Github-Pull: #31917
Rebased-From: bad1433ef2

Co-authored-by: maflcko <6399679+maflcko@users.noreply.github.com>
Co-authored-by: marcofleon <marleo23@proton.me>
Co-authored-by: Martin Zumsande <mzumsande@gmail.com>
2025-03-16 22:07:20 -04:00
David Gumberg
80c5d57bd1 contrib: Fix gen-bitcoin-conf.sh.
In #31118, the format of bitcoind's `--help` output changed slightly in
a way that breaks `gen-bitcoin-conf.sh`, modify the script to accomodate
the new format, by starting after the line that says "Options:" and
strip the `-help` option and its description from the output.

Github-Pull: #32049
Rebased-From: a24419f8be
2025-03-13 17:06:10 -04:00
merge-script
e9e6825b8c Merge bitcoin/bitcoin#32046: [29.x] bump to v29.0rc1
47e2fa86dc [doc] release notes link for 29.0 (glozow)
21f423939e [examples] generate example bitcoin.conf (glozow)
86a3ce6209 [doc] update man pages for 29.0rc1 (glozow)
95c21b1fdd [build] bump version to 29.0rc1 (glozow)
153bd443ec [build] bump CLIENT_VERSION_MAJOR to 29 (glozow)

Pull request description:

  - "backport" #32041
  - bump version to v29.0rc1
  - generate manpages
  - add example bitcoin.conf
  - add release-notes.md pointing to wiki

ACKs for top commit:
  achow101:
    ACK 47e2fa86dc
  davidgumberg:
    ACK 47e2fa86dc
  hebasto:
    ACK 47e2fa86dc.

Tree-SHA512: 4e4eec31ab12990d933b6313950e779b7b58fc349f294f59d2504a8db3c28d5dea64b79e588e2c0fe62836db306fb4c3fb3fcd7bd1f51350e880370cec3437d6
v29.0rc1
2025-03-13 11:49:25 +08:00