forked from PIVX-Project/PIVX
-
Notifications
You must be signed in to change notification settings - Fork 30
build: Drop ZeroMQ patch for glibc < 2.12 (Hennadii Stepanov) 079df96 build: Drop ZeroMQ patch for Mingw-w64 < 4.0 (Hennadii Stepanov) #3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
ryihan
wants to merge
10,000
commits into
NetboxGlobal:master
Choose a base branch
from
bitcoin:master
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
The check was incomplete and brittle. A better check would be to enable `PYTHONWARNDEFAULTENCODING=1` https://docs.python.org/3/whatsnew/3.10.html#optional-encodingwarning-and-encoding-locale-option However, it is unclear what the goal of adding explicit encodings everywhere is, given that: * Most modern systems already have UTF-8 enabled by default, except for Windows. * Python 3.15 will likely enable it globally by default, according to https://peps.python.org/pep-0686/#abstract * Adding the explicit encodings will bloat all code for no benefit. So remove the lint check and drop all redundant encoding= kwargs. All encoding= that are set for a reason, are kept.
The encoding arg is confusing, because it is not applied consistently for all IO. Also, it is useless, as the majority of files are ASCII encoded, which are fine to encode and decode with any mode. Moreover, UTF-8 is already required for most scripts to work properly, so setting the encoding twice is redundant. So remove the encoding from most IO. It would be fine to remove from all IO, however I kept it for two files: * contrib/asmap/asmap-tool.py: This specifically looks for utf-8 encoding errors, so it makes sense to sepecify the utf-8 encoding explicitly. * test/functional/test_framework/test_node.py: Reading the debug log in text mode specifically counts the utf-8 characters (not bytes), so it makes sense to specify the utf-8 encoding explicitly.
Historically, the headers have been bumped some time after a file has been touched. Do it now to avoid having to touch them again in the future for that reason. -BEGIN VERIFY SCRIPT- sed -i --regexp-extended 's;( 20[0-2][0-9])(-20[0-2][0-9])? The Bitcoin Core developers;\1-present The Bitcoin Core developers;g' $( git show --pretty="" --name-only HEAD~0 ) -END VERIFY SCRIPT-
All touched Python scripts already assume and require UTF8, so manually specifying encoding or decoding for functions in the subprocess module is redundant to just using text=True, which exists since Python 3.7
The appended content is irrelevant, but fix the "typo" to avoid spellchecker warnings.
Only include what we really need. Skip 100s of mb of manpages, swiftmodules, modulemaps. Note that System/Library is only needed for the Qt build.
Starting with Python 3.11, Pythons gzip might delegate to zlib. Depending on the OS, i.e Ubuntu vs Fedora, the underlying zlib implementation might differ, resulting in different output. For now, or until a better solution exists, disable compression. This results in the SDK increasing in size to ~157mb. Which is not unreasonable, to regain determinism (and would be significantly worse without the previous commit). See: https://docs.python.org/3/library/gzip.html#gzip.compress Co-authored-by: stickies-v <stickies-v@protonmail.com>
This puts it in scope for the Python linters.
3e43553 depends: latest config.sub (fanquake) 04eb84f depends: latest config.guess (fanquake) Pull request description: It's been about a year since these were last updated. Pull in the latest versions. ACKs for top commit: hebasto: ACK 3e43553, I have reviewed the code and it looks OK. Tree-SHA512: f18a0b95e71588e9f1ea55efb6379664aa6e9154801448e9425362414c3f3c4dab29dbe0e3ab02c46ac1f2e2ad1d067bc6feb8c550ccde37cabd1c0bd9d1b87c
…sed approach 70d9e8f fix: reorg behaviour in mempool tests to match real one (yuvicc) 540ed33 Move the create_empty_fork method to the test framework's blocktools.py module to enable reuse across multiple tests. (yuvicc) Pull request description: Updated functional tests to replace direct use of `invalidateblock` with proper fork-based reorg behaviour. The direct invalidation approach bypasses important validation checks and has depth limitations(10 block) that don't match real-world reorg scenarios. For more details see #32531. Fixes #32531 ACKs for top commit: instagibbs: reACK 70d9e8f theStack: re-ACK 70d9e8f Tree-SHA512: 8aae298bfa295b4e0e4627b522e9eac549399008fd8e336a66f8c9950c886917da0b3f0bdc62d0c8ea2b8082f36639300cac4070986a7766398e15bc1f666da5
Clear out space on the centos job be deleteing unnecessary files. Raised by #33293 which pointed to a solution like google/oss-fuzz@b7f04d7 Only runs when cache provider (runner) is `gha`, and on the CentOS job.
Also uses num_addresses from ipaddress instead of calculating it ourselves.
…:isInMempool() 2909655 fix: remove redundant mempool lock in ChainImpl::isInMempool() (Fibonacci747) Pull request description: This PR removes an unnecessary `LOCK(mempool->cs)` in `ChainImpl::isInMempool()`. The method calls `CTxMemPool::exists()`, which already locks `mempool->cs` internally. Because the mempool mutex is a RecursiveMutex, double-locking was safe but redundant. Dropping the outer lock matches patterns used elsewhere in ChainImpl (e.g. `hasDescendantsInMempool()` and `GetTransactionAncestry()` callers) where mempool read APIs are invoked without an additional lock and rely on the callee’s internal locking. `isRBFOptIn()` remains unchanged since `IsRBFOptIn(tx, pool)` explicitly requires the caller to hold `pool.cs` as indicated by its thread-safety annotation. ACKs for top commit: maflcko: lgtm ACK 2909655 instagibbs: utACK 2909655 stickies-v: ACK 2909655 Tree-SHA512: 4dfd88e01d8c7a4b6ceb3c736243fb22bfee5ccfc422d134acb633b908ca14c807637a2aa20de89e86e583b23ec70a1d121d77e35af60e114d93971b2a4bfd3b
CConnman::Stop() resets semOutbound, yet m_reconnections is not cleared in Stop. Each ReconnectionInfo contains a grant member that points to the memory that semOutbound pointed to and ~CConnman will attempt to access the grant field (memory that was already freed) when destroying m_reconnections. Fix this by calling m_reconnections.clear() in CConnman::Stop() and add appropriate annotations.
52230a7 test: check for output to stdout in `TestShell` test (Sebastian Falbesoner) Pull request description: This is a small follow-up PR to the recently added `TestShell` test (#33546), verifying the stdout message "TestShell is already running!" when trying to instantiate a second instance. ACKs for top commit: maflcko: lgtm ACK 52230a7 rkrux: crACK 52230a7 Tree-SHA512: 096d70e1bd0f09c1b389e58fa4b880442406c56f0c8ef8b8fbd0627081bc390b1ce5d6032bcca19b03206b7a444d9c523f9b62078b5ca5b7f1ae3c57bb4129c9
c0bfe72 Change Parse descriptor argument to string_view (Sjors Provoost) Pull request description: While investigating a silent merge conflict in #33135 I noticed that #32983 changed the descriptor `Parse` function signature from `const std::string& descriptor` to `std::span<const char> descriptor`. Calling that new version of `Parse` with a string literal will trigger a confusing "Invalid characters in payload" due to the trailing "\0". It can be worked around by having (the test) wrap string literals in `std::string()`, but that's easy to forget. Using `string_view` is easier and more compact than (as a previous version of this PR did) checking for trailing `\0`. Also add a test. ACKs for top commit: maflcko: review ACK c0bfe72 🍨 enirox001: tACK c0bfe72 stickies-v: ACK c0bfe72 rkrux: crACK c0bfe72 Tree-SHA512: 6b20307f834dae66826c8763f6c2ba0071f4e369375184cb5ff8543b85220fcaf33a47ddb065e418d1af3ed9a3fac401a7854f8924f52aab2b000b1f65328f2c
As per doc/developer-notes#logging, LogWarning should be used for severe problems that do not warrant shutting down the node
e07e573 ci: clear out space on centos job (will) Pull request description: Fixes #33293 Clear out space on jobs running on GHA by deleteing unnecessary files. Raised in #33293 which pointed to a solution like google/oss-fuzz@b7f04d7 which is adapted slightly here. Only runs when cache provider (runner) is `gha`. A run on my fork can be seen here: https://github.com/willcl-ark/bitcoin/actions/runs/19703413734/job/56444984809 ACKs for top commit: maflcko: lgtm ACK e07e573 m3dwards: ACK e07e573 janb84: ACK e07e573 Tree-SHA512: 723589df4c434dd3eaed43acefe25f1788837743882e910e79eceee25e2bd98990cd01b8b80a46ba82418867b32c5ee1b96341223696244504e118eae6ad4a16
…minism (across distros) 3e01b5d contrib: rename gen-sdk to gen-sdk.py (fanquake) c1213a3 macdeploy: disable compression in macOS gen-sdk script (fanquake) a33d034 contrib: more selectively pick files for macOS SDK (fanquake) Pull request description: This includes three changes. The first is to more selectively pick files for inclusion into our macOS SDK tarball (skip manpages, binaries etc), which is nice because it redues the size of the tarball (from ~80mb to 20mb), and makes the size increase that happens with the next commit, less-bad. The second change removes compression of the tarball. Starting with Python 3.11, Pythons gzip might delegate to zlib. Depending on the OS, i.e Ubuntu vs Fedora, the underlying zlib implementation might differ, resulting in different output. For now, or until a better solution exists, remove compression. This results in the SDK increasing in size to ~157mb. Which is not unreasonable, to regain determinism (and would be significantly worse without the previous commit). See: https://docs.python.org/3/library/gzip.html#gzip.compress The third renames `gen-sdk` to `gen-sdk.py`, so that it will be linted, along with the rest of our Python files. Fixes #31873. We could probably also put this into 30.x. ACKs for top commit: stickies-v: ACK 3e01b5d modulo the new .tar SDK being uploaded davidgumberg: Tested ACK 3e01b5d Tree-SHA512: 272164a98e0e6f10822870162c1b3a405693c2f64d3ed085a2d2243a48641d940704b5ef6022256915ac9cf383e87a4f8d4dc2ec4eaa9d25e2abd30f5498778b
Empty public keys in tapscript are rejected by consensus rules, independent of SCRIPT_VERIFY_STRICTENC. Add SCRIPT_ERR_TAPSCRIPT_EMPTY_PUBKEY to distinguish this from STRICTENC policy failures currently reported as SCRIPT_ERR_PUBKEYTYPE.
Gives less of a false sense of security.
…ive testing 2e27bd9 ci: Add Windows + UCRT jobs for cross-compiling and native testing (Hennadii Stepanov) bd130db ci: Rename items specific to Windows + MSVCRT (Hennadii Stepanov) Pull request description: This PR is part of the ongoing effort to migrate to the modern UCRT runtime for cross-compiled Windows binaries, including release builds. For more details about this migration, see: - #30210 - #33593 MSVCRT-related CI jobs should be removed from the CI framework once the migration to UCRT is complete. ACKs for top commit: maflcko: review ACK 2e27bd9 🖊 fanquake: ACK 2e27bd9 Tree-SHA512: 222ca5e54646bcce9db6e20191d5891e988274e18b2f30085de6435a3b288a9d0fc414e8f76342e275ae58ee6603f751933d1faa8bdff446edf2695091f8ca4c
GCC-based tools already follow the standard naming convention for the `x86_64-w64-mingw32ucrt` target.
This also adds a per-cost variant of each.
Building with Boost 1.73.0 is broken.
This adds a data structure representing the optimization state for the spanning-forest linearization algorithm (SFL), plus a fuzz test for its correctness. This is preparation for switching over Linearize() to use this algorithm. See https://delvingbitcoin.org/t/spanning-forest-cluster-linearization/1419 for a description of the algorithm.
Rather than using an ad-hoc no-dependency copy of the graph when a potentially non-topological linearization is needed in the clusterlin fuzz test, add this directly as a feature in ReadLinearization(). This is preparation for a later commit where another use for such a function is added.
This replaces the existing LIMO linearization algorithm (which internally uses ancestor set finding and candidate set finding) with the much more performant spanning-forest linearization algorithm. This removes the old candidate-set search algorithm, and several of its tests, benchmarks, and needed utility code. The worst case time per cost is similar to the previous algorithm, so ACCEPTABLE_ITERS is unchanged.
This introduces a queue of chunks that still need processing, in both MakeTopological() and OptimizationStep(). This is simultaneously: * A preparation for introducing randomization, by allowing permuting the queue. * An improvement to the fairness of suboptimal solutions, by distributing the work more fairly over chunks. * An optimization, by avoiding retrying chunks over and over again which are already known to be optimal.
This introduces a local RNG inside the SFL state, which is used to randomize various decisions inside the algorithm, in order to make it hard to create pathological clusters which predictably have bad performance. The decisions being randomized are: * When deciding what chunk to attempt to split, the queue order is randomized. * When deciding which dependency to split on, a uniformly random one is chosen among those with higher top feerate than bottom feerate within the chosen chunk. * When deciding which chunks to merge, a uniformly random one among those with the higher feerate difference is picked. * When merging two chunks, a uniformly random dependency between them is now activated. * When making the state topological, the queue of chunks to process is randomized.
This places equal-feerate chunks (with no dependencies between them) in random order in the linearization output, hiding information about DepGraph insertion order from the output. Likewise, it randomizes the order of transactions within chunks for the same reason.
This ended up never being used in txgraph.
With MergeLinearizations() gone and the LIMO-based Linearize() replaced by SFL, we do not need a class (LinearizationChunking) that can maintain an incrementally-improving chunk set anymore. Replace it with a function (ChunkLinearizationInfo) that just computes the chunks as SetInfos once, and returns them as a vector. This simplifies several call sites too.
Fixes #34101 by reverting `boost::multi_index::contains` calls only available in Boost 1.78.0
Replace the last few instances of `.count() != 0` and `.count() == 0` and `.count()` patterns with the more expressive C++20 `.contains()` method: * `std::set<std::string>` in `getblocktemplate` RPC; * `std::map<std::string, ...>` in `transaction_tests`; * other bare `std::unordered_set` and `std::map` count calls. With no remaining violations, enable the `readability-container-contains` clang-tidy check to prevent future regressions.
75bdb92 clusterlin: drop support for improvable chunking (simplification) (Pieter Wuille) 91399a7 clusterlin: remove unused MergeLinearizations (cleanup) (Pieter Wuille) 5ce2800 clusterlin: randomize equal-feerate parts of linearization (privacy) (Pieter Wuille) 13aad26 clusterlin: randomize various decisions in SFL (feature) (Pieter Wuille) ddbfa4d clusterlin: keep FIFO queue of improvable chunks (preparation) (Pieter Wuille) 3efc94d clusterlin: replace cluster linearization with SFL (feature) (Pieter Wuille) 6a8fa82 clusterlin: add support for loading existing linearization (feature) (Pieter Wuille) da48ed9 clusterlin: ReadLinearization for non-topological (tests) (Pieter Wuille) c461259 clusterlin: add class implementing SFL state (preparation) (Pieter Wuille) 95bfe7d clusterlin: replace benchmarks with SFL-hard ones (bench) (Pieter Wuille) 86dd550 clusterlin: add known-correct optimal linearization tests (tests) (Pieter Wuille) Pull request description: Part of cluster mempool: #30289. This replaces the cluster linearization algorithm introduced in #30126 and #30286 (a combination of LIMO with candidate-set search), with a completely different algorithm: [spanning-forest linearization](https://delvingbitcoin.org/t/spanning-forest-cluster-linearization/1419/1), which appears to have much better performance for hard clusters. See [this post](https://delvingbitcoin.org/t/how-to-linearize-your-cluster/303/68) for a comparison between various linearization algorithms, and [this post](https://delvingbitcoin.org/t/how-to-linearize-your-cluster/303/73) for benchmarks comparing them. Replaying historical mempool data on it shows that it can effectively linearize every observed cluster up to 64 transactions optimally within tens of microseconds, though pathological examples can be created which take longer. The algorithm is effectively a very specialized version of the [simplex algorithm](https://en.wikipedia.org/wiki/Simplex_algorithm) to the problem of finding high-feerate topological subsets of clusters, but modified to find all consecutive such subsets concurrently rather than just the first one. See the post above for how it is related. It represents the cluster as partitioned into a set of chunks, each with a spanning tree of its internal dependencies connecting the transactions. Randomized improvements are made by selecting dependencies to add and remove to these spanning trees, merging and splitting chunks, until no more improvements are possible, or a computation budget is reached. Like simplex, it does not necessarily make progress in every step, and thus has no upper bound on its runtime to find optimal, but randomization makes long runtimes very unlikely, and additionally makes it hard to adversarially construct clusters in which the algorithm reliably makes bad choices. ACKs for top commit: instagibbs: reACK 75bdb92 marcofleon: reACK 75bdb92 Tree-SHA512: 189d85b34f0eb847562af7da724c61e39f0a785e24ebe2d4c8ee44698d02bd17842d699987d282a79bd1de30f50de28ec0f11d594ebbfa499f6a9b9ce35aecd8
aeb7ccb doc: add missing copyright headers (fanquake) 68a7cb8 contrib: output copyright in generate-seeds.py (fanquake) Pull request description: Takes care of some queries from #34084. ACKs for top commit: rkrux: tACK aeb7ccb janb84: ACK aeb7ccb Tree-SHA512: 12bb8fe58e0e84d4e1dcba94f95da2ebb0518208023459cb8ca81c1f95715749a6009cda8fe140dcde809fe35bdae10ee55b5eeea2cacfa30c58b1caefb2b521
f480c1e build: Update minimum required Boost version (Hennadii Stepanov) Pull request description: Building with Boost 1.73.0 has been [broken](#34095 (review)) since #31122 was merged. This PR updates the minimum required Boost version to 1.74.0. According to https://repology.org/project/boost/versions, none of the major distros are affected by this change. ACKs for top commit: maflcko: lgtm ACK f480c1e l0rinc: untested ACK f480c1e pablomartin4btc: utACK f480c1e janb84: ut ACK f480c1e Tree-SHA512: 6af72a001a566fb5a7b60e23bdb9619e87f277a1a3928ceb304bd35b8b35f56e4d38f25983db9a8732ecdb957cec9850a0fcf6719f3a65d903872e63d80b4d7c
…itting fa33605 Move ci_exec to the Python script (MarcoFalke) fa83555 ci: Require rsync to pass (MarcoFalke) eeee02e ci: Untangle CI_EXEC bash function (MarcoFalke) fa21fd1 ci: Move macos snippet under DANGER_RUN_CI_ON_HOST (MarcoFalke) fa37559 ci: Document the retry script in PATH (MarcoFalke) 666675e ci: Move folder creation and docker kill to Python script (MarcoFalke) Pull request description: The remaining `ci/test/02_run_container.sh` is fine, but has a bunch of shellcheck SC2086 word splitting violations. This is fine currently, because the only place that needed them had additional escaping, and all other commands happened to split fine on spaces. However, this may change in the future. So fix it now, by rewriting it in Python, which is recommended in the dev notes. ACKs for top commit: frankomosh: Code Review ACK [fa33605](fa33605) m3dwards: ACK fa33605 Tree-SHA512: 472decb13edca75566dffe49b9b3f554ab977fa60ec7902d5a060fe53381aee8606a10ff0c990a62ee2454dc6d9430cc064f58320b9043070b7bf08845413bf4
…-tidy rule 1e94e56 refactor: enable `readability-container-contains` clang-tidy rule (Lőrinc) fd9f1ac Fix compilation for old Boost versions (Lőrinc) Pull request description: Replace the last few instances of `.count() != 0` and `.count() == 0` and bare `count()` patterns with the more expressive C++20 `.contains()` method: * `std::set<std::string>` in `getblocktemplate` RPC; * `std::map<std::string, ...>` in `transaction_tests`; * other bare `std::unordered_set` and `std::map` count calls. Also fixes #34101 by reverting `boost::multi_index::contains` calls not available in our minimum supported version. With no remaining violations, enable the `readability-container-contains` clang-tidy check to prevent future regressions. Follow-up to #33192 ACKs for top commit: hebasto: ACK 1e94e56. pablomartin4btc: re-ACK 1e94e56 janb84: ACK 1e94e56 rkrux: re-ACK 1e94e56 Tree-SHA512: d54a7821d319bf0d60b6c3a870917464a7d5b9279c6a86708c03a3516ec23bbf18f0e83de62b3b2b1607de96e1470f1144b4918d69a6c770e6b7e09863e7dbac
fa4cb13 test: [doc] Manually unify stale headers (MarcoFalke) fa5f297 scripted-diff: [doc] Unify stale copyright headers (MarcoFalke) Pull request description: Historically, the upper year range in file headers was bumped manually or with a script. This has many issues: * The script is causing churn. See for example commit 306ccd4, or drive-by first-time contributions bumping them one-by-one. (A few from this year: #32008, #31642, #32963, ...) * Some, or likely most, upper year values were wrong. Reasons for incorrect dates could be code moves, cherry-picks, or simply bugs in the script. * The upper range is not needed for anything. * Anyone who wants to find the initial file creation date, or file history, can use `git log` or `git blame` to get more accurate results. * Many places are already using the `-present` suffix, with the meaning that the upper range is omitted. To fix all issues, this bumps the upper range of the copyright headers to `-present`. Further notes: * Obviously, the yearly 4-line bump commit for the build system (c.f. b537a2c) is fine and will remain. * For new code, the date range can be fully omitted, as it is done already by some developers. Obviously, developers are free to pick whatever style they want. One can list the commits for each style. * For example, to list all commits that use `-present`: `git log --format='%an (%ae) [%h: %s]' -S 'present The Bitcoin'`. * Alternatively, to list all commits that use no range at all: `git log --format='%an (%ae) [%h: %s]' -S '(c) The Bitcoin'`. <!-- * The lower range can be wrong as well, so it could be omitted as well, but this is left for a follow-up. A previous attempt was in #26817. ACKs for top commit: l0rinc: ACK fa4cb13 rkrux: re-ACK fa4cb13 janb84: ACK fa4cb13 Tree-SHA512: e5132781bdc4417d1e2922809b27ef4cf0abb37ffb68c65aab8a5391d3c917b61a18928ec2ec2c75ef5184cb79a5b8c8290d63e949220dbeab3bd2c0dfbdc4c5
Specifically gets rid of batchpriority, chainparams, script/sign.h and system includes. Also take the opportunity of cleaning up the headers for the effected files and adding them to the iwyu-enforced set.
This should avoid having to include interfaces/chain.h from a kernel module. interfaces/chain.h in turn includes a bunch of non-kernel headers, that break the desired library topology and might introduce entanglement regressions.
d3a479c kernel: Move BlockInfo to a kernel file (TheCharlatan) d69a582 kernel: Remove some unnecessary non-kernel includes (TheCharlatan) Pull request description: Found these while attempting to isolate the kernel library sources into their own repository. There still is no mechanism for preventing including headers into the kernel library that don't belong to kernel modules, but it is also fairly straight forward to correct manually for now. However, the changes here might be incomplete. ACKs for top commit: hebasto: re-ACK d3a479c. maflcko: review ACK d3a479c 🦏 janb84: ACK d3a479c Tree-SHA512: b2a40aa758437a4e72648fe38ca308c0bea3a7d8559c62182cd3daa2858de62b7418afe4b9054ebdb88082036bc1691803c2b3b2dacd0ff2208a9ffdcba0e7e9
356883f qa-tests: Log expected output in debug (Hodlinator) 7427a03 qa-tests: Add test for timeouts due to missing init errors (Hodlinator) d7f703c refactor(qa-tests): Extract InternalDurationTestMixin for use in next commit (Hodlinator) 69bcfca fix(qa-tests): Bring back decoding of exception field (Hodlinator) fb43b2f qa: Improve assert_start_raises_init_error output (Hodlinator) Pull request description: Raising a new exception from within a Python `except`-block, as `assert_start_raises_init_error()` does, causes the interpreter to generate extra error output which is unnecessary in this case. <details><summary>Example output before & after this PR</summary> Before: ``` 2025-07-08T20:05:48.407001Z TestFramework (ERROR): Assertion failed Traceback (most recent call last): File "/home/hodlinator/bitcoin/test/functional/test_framework/test_node.py", line 686, in assert_start_raises_init_error ret = self.process.wait(timeout=self.rpc_timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/nix/store/fqm9bqqlmaqqr02qbalm1bazp810qfiw-python3-3.12.9/lib/python3.12/subprocess.py", line 1266, in wait return self._wait(timeout=timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/nix/store/fqm9bqqlmaqqr02qbalm1bazp810qfiw-python3-3.12.9/lib/python3.12/subprocess.py", line 2053, in _wait raise TimeoutExpired(self.args, timeout) subprocess.TimeoutExpired: Command '['/home/hodlinator/bitcoin/build/bin/bitcoind', '-datadir=/tmp/bitcoin_func_test_v96lkcq8/eb2665c7/node0', '-logtimemicros', '-debug', '-debugexclude=libevent', '-debugexclude=leveldb', '-debugexclude=rand', '-uacomment=testnode0', '-disablewallet', '-logthreadnames', '-logsourcelocations', '-loglevel=trace', '-v2transport=0']' timed out after 3 seconds During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/hodlinator/bitcoin/test/functional/test_framework/test_framework.py", line 186, in main self.setup() File "/home/hodlinator/bitcoin/test/functional/test_framework/test_framework.py", line 358, in setup self.setup_network() File "/home/hodlinator/bitcoin/build/test/functional/feature_framework_startup_failures.py", line 151, in setup_network self.nodes[0].assert_start_raises_init_error() File "/home/hodlinator/bitcoin/test/functional/test_framework/test_node.py", line 716, in assert_start_raises_init_error self._raise_assertion_error(assert_msg) File "/home/hodlinator/bitcoin/test/functional/test_framework/test_node.py", line 196, in _raise_assertion_error raise AssertionError(self._node_msg(msg)) AssertionError: [node 0] bitcoind should have exited within 3s with an error ``` After: ``` 2025-07-08T20:09:15.330589Z TestFramework (ERROR): Assertion failed Traceback (most recent call last): File "/home/hodlinator/bitcoin/test/functional/test_framework/test_framework.py", line 186, in main self.setup() File "/home/hodlinator/bitcoin/test/functional/test_framework/test_framework.py", line 358, in setup self.setup_network() File "/home/hodlinator/bitcoin/build/test/functional/feature_framework_startup_failures.py", line 151, in setup_network self.nodes[0].assert_start_raises_init_error() File "/home/hodlinator/bitcoin/test/functional/test_framework/test_node.py", line 720, in assert_start_raises_init_error self._raise_assertion_error(assert_msg) File "/home/hodlinator/bitcoin/test/functional/test_framework/test_node.py", line 196, in _raise_assertion_error raise AssertionError(self._node_msg(msg)) AssertionError: [node 0] bitcoind should have exited within 3s with an error (cmd: ['/home/hodlinator/bitcoin/build/bin/bitcoind', '-datadir=/tmp/bitcoin_func_test_v96lkcq8/eb2665c7/node0', '-logtimemicros', '-debug', '-debugexclude=libevent', '-debugexclude=leveldb', '-debugexclude=rand', '-uacomment=testnode0', '-disablewallet', '-logthreadnames', '-logsourcelocations', '-loglevel=trace', '-v2transport=0']) ``` </details> --- Can be tested on this PR by: 1. Execute test containing new test case: ```shell build/test/functional/feature_framework_startup_failures.py -ldebug > after.log ``` 2. Drop first commit which contains the fix. 3. Re-run test: ```shell build/test/functional/feature_framework_startup_failures.py -ldebug > before.log ``` 4. Diff logs, focusing on `TestInitErrorTimeout OUTPUT` sections. --- Found while testing #32835 using the suggested method (#32835 (comment)) which triggered expected timeouts, but with the extra error noise. ACKs for top commit: l0rinc: ACK 356883f ryanofsky: Code review ACK 356883f. Thanks for the updates! Just rearranged commits and made minor changes in "missing init errors" test since last review furszy: Code ACK 356883f Tree-SHA512: 01f2f1f6a5e79cf83a39a143cfb8b2bb8360e0402e91a97a7df8254309fd4436a55468d11825093c052010bfce57f3461d912a578cd2594114aba435ab48b999
d7de5b1 logs: show reindex progress in `ImportBlocks` (Lőrinc) Pull request description: ### Summary When triggering a reindex, users have no indication of progress. ### Fix This patch precomputes the total number of block files so progress can be shown. Instead of only displaying which block file is being processed, it now shows the percent complete. ### Reproducer + expected results ```bash cmake -B build -DCMAKE_BUILD_TYPE=Release && make -C build -j && ./build/bin/bitcoind -datadir=demo -reindex ``` Before, the block files were shown one-by-one, there's no way to see how much work is left: ``` Reindexing block file blk00000.dat... Loaded 119920 blocks from external file in 1228ms Reindexing block file blk00001.dat... Loaded 10671 blocks from external file in 284ms Reindexing block file blk00002.dat... Loaded 5459 blocks from external file in 263ms Reindexing block file blk00003.dat... Loaded 5595 blocks from external file in 267ms ``` After the change we add a percentage: ``` Reindexing block file blk00000.dat (0% complete)... Loaded 119920 blocks from external file in 1255ms Reindexing block file blk00001.dat (1% complete)... Loaded 10671 blocks from external file in 303ms Reindexing block file blk00002.dat (2% complete)... Loaded 5459 blocks from external file in 278ms Reindexing block file blk00003.dat (3% complete)... Loaded 5595 blocks from external file in 285ms ``` ACKs for top commit: enirox001: Concept ACK d7de5b1 rkrux: lgtm ACK d7de5b1 danielabrozzoni: tACK d7de5b1 - code reviewed and tested on my archival node. maflcko: review ACK d7de5b1 💇 Tree-SHA512: 359a539b781ad8b73e2a616c951567062a76be27cf90e5b88bb5309295af9cd7994e327f185bacc1482b43b892b38329593b4043a5e71d8800e3e4b7a3954310
56750c4 iwyu, clang-format: Sort includes (Hennadii Stepanov) 2c78814 ci: Add IWYU job (Hennadii Stepanov) 94e4f04 cmake: Fix target name (Hennadii Stepanov) 0f81e00 cmake: Make `codegen` target dependent on `generate_build_info` (Hennadii Stepanov) 73f7844 iwyu: Add patch to prefer C++ headers over C counterparts (Hennadii Stepanov) 7a65437 iwyu: Add patch to prefer angled brackets over quotes for includes (Hennadii Stepanov) Pull request description: This PR separates the IWYU checks into its own CI job to provide faster feedback to developers. No other changes are made to the treatment of IWYU warnings. The existing “tidy” CI job will no longer run IWYU. See also the discussion of #33779, specifically this [comment](#33779 (comment)): > Maybe a better approach would be to run the enforced sections in a separate, faster job? Some of the linters are already a bit annoying to invoke locally, so I usually just run the lint job. Doing the same for the includes seems fine to me. Based on ideas from #32953. ACKs for top commit: maflcko: review ACK 56750c4 🌄 sedited: ACK 56750c4 Tree-SHA512: af15326b6d0c5d1e11346ac64939644936c65eb9466cd1a17ab5da347d39aef10f7ab33b39fbca31ad291b0b4b54639b147b24410f4f86197e4a776049882694
1841bf9 test: address self-announcement (0xb10c) Pull request description: Test that a node sends a self-announcement with its external IP to in- and outbound peers after connection open and again sometime later. Since the code for the test is mostly the same for addr and addrv2 messages, I opted to add a new test file instead of having duplicate code in `p2p_addr_relay.py` and `p2p_addrv2_relay.py`. ACKs for top commit: Bicaru20: ACK 1841bf9 achow101: ACK 1841bf9 rkrux: ACK 1841bf9 fjahr: Code review ACK 1841bf9 Tree-SHA512: 692a01e9f10eb55ee870de623e85182a10a75225766e0f0251ad5d9e369537ec27ca6e06905374190f3afe00ba6f71ae72f262228baaa535238a87160e1ce4f1
1ed8e76 rpc, doc: clarify the response of listtransactions RPC (rkrux) Pull request description: I noticed this behaviour while perf testing PR #27286 and it was not something that I expected, updating the doc to make it present in the RPCHelp command. ACKs for top commit: achow101: ACK 1ed8e76 furszy: ACK 1ed8e76 musaHaruna: ACK [1ed8e76](1ed8e76) since my last review. New changes looks good, it's much easier to understand as well, looking at it from a user's perspective. Tree-SHA512: 893a8e259201ac2140f46f827d81e681d2ec478c9571cceb10864aaa1b941991ce2263357d7c2b0024c04a9f8fbc372a020104b26e022c96289d271675947033
217dbbb test: Add musig failure scenarios (Fabian Jahr) c9519c2 musig: Check session id reuse (Fabian Jahr) e755614 sign: Remove duplicate sigversion check (Fabian Jahr) 0f7f069 musig: Move MUSIG_CHAINCODE to musig.cpp (Fabian Jahr) Pull request description: This is a follow-up to #29675 and primarily adds test coverage for some of the most prominent failure cases in the last commit. The following commits address a few left-over nit comments that didn't make it in before merge. ACKs for top commit: achow101: ACK 217dbbb rkrux: lgtm ACK 217dbbb Tree-SHA512: d73807bc31791ef1825c42f127c7ddfbc70b2b7cf782bc11341666e32e86b787ffc7aed64caea992909cef3a85fc6629282d8209c173aadec77f72fd0da96c45
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
build: Drop ZeroMQ patch for glibc < 2.12 (Hennadii Stepanov)
079df96 build: Drop ZeroMQ patch for Mingw-w64 < 4.0 (Hennadii Stepanov)