Commit Graph

27616 Commits

Author SHA1 Message Date
Kittywhiskers Van Gogh
f321d3de0c
merge bitcoin#29673: use GCC 11 in macOS build env 2024-11-10 17:58:34 +00:00
Kittywhiskers Van Gogh
d570e2d21f
merge bitcoin#29695: build GCC with --enable-standard-branch-protection 2024-11-10 17:58:34 +00:00
Kittywhiskers Van Gogh
c965943a57
merge bitcoin#29651: bump time-machine to dc4842797bfdc5f9f3f5f725bf189c2b68bd6b5a 2024-11-10 17:58:33 +00:00
Kittywhiskers Van Gogh
59a125a5ad
merge bitcoin#27897: use GCC 12.3.0 to build releases 2024-11-10 17:58:33 +00:00
Kittywhiskers Van Gogh
a701b06435
merge bitcoin#29078: Bump guix time-machine to unlock riscv64 metal 2024-11-10 17:58:33 +00:00
Kittywhiskers Van Gogh
d4b10a3813
merge bitcoin#28786: switch to 6.1 kernel headers over 5.15 2024-11-10 17:58:33 +00:00
Kittywhiskers Van Gogh
c3718700ab
merge bitcoin#28580: update time-machine 2024-11-10 17:58:33 +00:00
Kittywhiskers Van Gogh
d36c9b6466
merge bitcoin#28759: update signapple to latest master 2024-11-10 17:58:33 +00:00
Kittywhiskers Van Gogh
38c71d88b4
merge bitcoin#28370: remove GCC 10 workaround from NSIS 2024-11-10 17:58:33 +00:00
pasta
f155ecfa29
Merge #6382: backport: merge bitcoin#21089, #27670, #24031, #26470, #27296, #27179, #27813, #27811, #28069, #28294, #28324, #28328, #29987 (guix backports: part 4)
1edd1215ef merge bitcoin#29987: build with glibc 2.31 (Kittywhiskers Van Gogh)
09498259d3 revert: add exception for 32-bit ARM builds which need glibc 2.28 (Kittywhiskers Van Gogh)
0ac25311d5 merge bitcoin#28328: update time-machine (Kittywhiskers Van Gogh)
ef9c4bdc60 merge bitcoin#28324: pre time-machine bump changes (Linux) (Kittywhiskers Van Gogh)
b45a127658 merge bitcoin#28294: pre time-machine bump changes (Windows) (Kittywhiskers Van Gogh)
ed1f7fe812 merge bitcoin#28069: Remove librt usage from release binaries (Kittywhiskers Van Gogh)
5d51aa940d merge bitcoin#27811: Clean up manifest (Kittywhiskers Van Gogh)
d439e4612f merge bitcoin#27813: Update `python-lief` package to 0.13.2 (Kittywhiskers Van Gogh)
70e62830a1 merge bitcoin#27179: use osslsigncode 2.5 (Kittywhiskers Van Gogh)
3799509603 merge bitcoin#27296: import/sync python-lief (0.12.3) package definition from upstream (Kittywhiskers Van Gogh)
ac8bd5ae5f refactor: move lief definitions to expected location (Kittywhiskers Van Gogh)
eb0ae0828a merge bitcoin#26470: Clean up `libexec/build.sh` (Kittywhiskers Van Gogh)
d3d7a0562a merge bitcoin#24031: don't compress macOS DMG (Kittywhiskers Van Gogh)
6a54603ca3 merge bitcoin#27670: remove redundant glibc patches (Kittywhiskers Van Gogh)
0c988f06d8 merge bitcoin#21089: Add support for powerpc64{,le} (Kittywhiskers Van Gogh)
808d215926 fix: set correct locale in guix ci container (UdjinM6)

Pull request description:

  ## Motivation

  In preparation for migrating to C++20 and bumping our minimum required compiler to ensure that we have access to greater portions of the C++20 spec, this pull request first of two pull requests aiming to upgrade our Guix setup to use GCC 12 (and GCC 11 for the macOS toolchain).

  Upgrades to the Clang toolchain for macOS and moving to GCC 12 for the macOS toolchain will be addressed in a separate pull request as the latter requires [bitcoin#21778](https://github.com/bitcoin/bitcoin/pull/21778), which is well outside the scope of this PR.

  ## Additional Notes

  * Dependency for https://github.com/dashpay/dash/pull/6383

  * Newer versions of GCC will not behave as expected with `test-security-check.py` as the stack protector (listed as `Canary` in the test) now behaves as expected and no longer fails. This causes an error when running it as the test expects failure (see below). This isn't an issue upstream as they backported [bitcoin#29987](https://github.com/bitcoin/bitcoin/pull/29987), which gets rid of those tests ([source](b5fc6d46a3 (diff-52aa0cda44721f089e53b128cb1232a876006ef257b211655456b17dfb2ec712))).

    Therefore, we have backported that pull request as well.

    <details>

    <summary>Build failure:</summary>

    ```
    ======================================================================
    FAIL: test_ELF (__main__.TestSecurityChecks)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/distsrc-base/distsrc-22.0.0-beta.1-70-g7907fab39c17-x86_64-linux-gnu/./contrib/devtools/test-security-check.py", line 61, in test_ELF
        self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-zexecstack','-fno-stack-protector','-Wl,-znorelro','-no-pie','-fno-PIE', '-Wl,-z,separate-code']),
    AssertionError: Tuples differ: (1, 'test1: failed PIE NX RELRO CONTROL_FLOW') != (1, 'test1: failed PIE NX RELRO Canary CONTROL_FLOW')

    First differing element 1:
    'test1: failed PIE NX RELRO CONTROL_FLOW'
    'test1: failed PIE NX RELRO Canary CONTROL_FLOW'

    - (1, 'test1: failed PIE NX RELRO CONTROL_FLOW')
    + (1, 'test1: failed PIE NX RELRO Canary CONTROL_FLOW')
    ?                                +++++++

    ----------------------------------------------------------------------
    Ran 1 test in 0.126s

    FAILED (failures=1)
    ```

    </details>

    * The backport has the effect of bumping the target glibc version to 2.31, which as the release notes say, cuts off support for RHEL 8 and Ubuntu 18.04 LTS (`bionic`) (i.e. our Guix binaries won't run on these distros anymore, users running those distros will have to compile it themselves).

    This shouldn't be a problem as full support for RHEL 8 ended May 31, 2024 ([source](https://access.redhat.com/support/policy/updates/errata#Life_Cycle_Dates)) and standard support for `bionic` ended April 2023 ([source](https://ubuntu.com/about/release-cycle)).

    **Dash Core will still work on Ubuntu 20.04 LTS (`focal`) as it ships with glibc 2.31 ([source](https://packages.ubuntu.com/focal/glibc-doc))**

  ## Breaking Changes

  None expected

  ## Checklist:

  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)**
  - [x] I have added or updated relevant unit/integration/functional/e2e tests
  - [x] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  UdjinM6:
    utACK 1edd1215ef

Tree-SHA512: 194a35a72ede5fb5488cdc41eb15320df7a5fa1fb8815c7342dd15b3983efff417fb1a525fdf497a98ede91958d0a5ed18f3e5f0f27c5cbc5dc25eb58116dbd5
2024-11-10 10:34:59 -06:00
Kittywhiskers Van Gogh
1edd1215ef
merge bitcoin#29987: build with glibc 2.31 2024-11-06 19:22:02 +00:00
Kittywhiskers Van Gogh
09498259d3
revert: add exception for 32-bit ARM builds which need glibc 2.28
reverts:
- 853583019b

We're going to be updating to glibc 2.31 in the next commit
2024-11-06 19:22:02 +00:00
Kittywhiskers Van Gogh
0ac25311d5
merge bitcoin#28328: update time-machine 2024-11-06 19:22:02 +00:00
Kittywhiskers Van Gogh
ef9c4bdc60
merge bitcoin#28324: pre time-machine bump changes (Linux) 2024-11-06 19:22:02 +00:00
Kittywhiskers Van Gogh
b45a127658
merge bitcoin#28294: pre time-machine bump changes (Windows) 2024-11-06 19:22:02 +00:00
Kittywhiskers Van Gogh
ed1f7fe812
merge bitcoin#28069: Remove librt usage from release binaries 2024-11-06 19:22:02 +00:00
Kittywhiskers Van Gogh
5d51aa940d
merge bitcoin#27811: Clean up manifest 2024-11-06 19:22:02 +00:00
Kittywhiskers Van Gogh
d439e4612f
merge bitcoin#27813: Update python-lief package to 0.13.2 2024-11-06 19:22:01 +00:00
Kittywhiskers Van Gogh
70e62830a1
merge bitcoin#27179: use osslsigncode 2.5 2024-11-06 19:22:01 +00:00
Kittywhiskers Van Gogh
3799509603
merge bitcoin#27296: import/sync python-lief (0.12.3) package definition from upstream 2024-11-06 19:22:01 +00:00
Kittywhiskers Van Gogh
ac8bd5ae5f
refactor: move lief definitions to expected location
Should help upcoming commits render their diffs correctly
2024-11-06 19:22:01 +00:00
Kittywhiskers Van Gogh
eb0ae0828a
merge bitcoin#26470: Clean up libexec/build.sh 2024-11-06 19:22:01 +00:00
Kittywhiskers Van Gogh
d3d7a0562a
merge bitcoin#24031: don't compress macOS DMG 2024-11-06 19:22:01 +00:00
Kittywhiskers Van Gogh
6a54603ca3
merge bitcoin#27670: remove redundant glibc patches 2024-11-06 19:22:01 +00:00
Kittywhiskers Van Gogh
0c988f06d8
merge bitcoin#21089: Add support for powerpc64{,le}
continuation of 9c8f5f71 from dash#5237
2024-11-06 19:22:01 +00:00
UdjinM6
808d215926
fix: set correct locale in guix ci container 2024-11-06 19:22:00 +00:00
pasta
a8e2316d6f
Merge #6377: depends: update 'src/immer' to arximboldi/immer@5875f773 as c0b716f2
f18e839b2f build: drop symlinks in immer subtree (Kittywhiskers Van Gogh)
d761111f6c build: fix gitian builds (Kittywhiskers Van Gogh)
a9f46b32c3 Squashed 'src/immer/' changes from 9cb6a5a845..5875f7739a (Kittywhiskers Van Gogh)
e4ee302d6e revert: fix gitian builds (Kittywhiskers Van Gogh)
fb00300f30 revert: drop symlinks in immer subtree (Kittywhiskers Van Gogh)

Pull request description:

  ## Additional Information

  * Dependency for https://github.com/dashpay/dash/pull/6380

  https://github.com/dashpay/dash/pull/6380 will be using `std::ranges` as a replacement for [dash#4622](https://github.com/dashpay/dash/pull/4622) and currently, it will fail to compile due to the current version of `immer` (last updated two years ago in https://github.com/dashpay/dash/pull/4911) not meeting constraints ([source](https://en.cppreference.com/w/cpp/language/constraints)) set by `std::ranges` (see below).

  ```
  ./evo/deterministicmns.h:243:16: error: no matching function for call to object of type 'const __count_if_fn'
          return ranges::count_if(mnMap, [](const auto& p) { return IsMNValid(*p.second); });
                 ^~~~~~~~~~~~~~~~
  /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/ranges_algo.h:331:7: note: candidate template ignored: substitution failure [with _Range = const MnMap &, _Proj = identity, _Pred = (lambda at ./evo/deterministicmns.h:243:40)]: constraints not satisfied for alias template 'range_difference_t' [with _Range = const immer::map<uint256, std::shared_ptr<const CDeterministicMN>, CDeterministicMNList::ImmerHasher> &]
        operator()(_Range&& __r, _Pred __pred, _Proj __proj = {}) const
        ^
  /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/ranges_algo.h:316:7: note: candidate function template not viable: requires at least 3 arguments, but 2 were provided
        operator()(_Iter __first, _Sent __last,
        ^
  ```

  This has been resolved by updating `immer` to the latest available release, [v0.8.1](https://github.com/arximboldi/immer/releases/tag/v0.8.1).

  Expected subtree hash **without changes** are `a5ded361aec714bc74149909c5e1984c10ab132c4c539c63fe57362dccd95556` (see [here](https://github.com/dashpay/dash/pull/6323#pullrequestreview-2357380766) for verification instructions).

  ## Breaking Changes

  None expected.

  ## Checklist

  - [x] I have performed a self-review of my own code **(note: N/A)**
  - [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)**
  - [x] I have added or updated relevant unit/integration/functional/e2e tests **(note: N/A)**
  - [x] I have made corresponding changes to the documentation **(note: N/A)**
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  PastaPastaPasta:
    utACK f18e839b2f
  UdjinM6:
    utACK f18e839b2f

Tree-SHA512: 99d1b577eb4cf3fcc3ebfd28f19006700f085d23ccdabe802a2aa5844e4b39314347b0c0e49a352c5fc034d6584a0109edf08fa3c0846514967f1fb16e7f127a
2024-11-04 10:31:26 -06:00
pasta
444d7a946b
Merge #6379: ci: update containers and CI to use Ubuntu 22.04 LTS (jammy)
1592a0f92e ci: update containers and CI to use Ubuntu 22.04 LTS (`jammy`) (Kittywhiskers Van Gogh)
decbd05b77 ci: stop running `check-symbols` during builds (Kittywhiskers Van Gogh)

Pull request description:

  ## Motivation

  While some aspects of C++20 are supported by GCC 9.3 (the version shipped with `focal`, [source](https://packages.ubuntu.com/focal/g++)), P0896R4 ("The One Ranges Proposal") is not ([source](https://en.cppreference.com/w/cpp/compiler_support)), required for moving away from [dash#4622](https://github.com/dashpay/dash/pull/4622) to adopt `std::ranges` and for backporting PRs like [bitcoin#28687](https://github.com/bitcoin/bitcoin/pull/28687).

  They're supported from GCC 10.1 onwards ([source](https://stackoverflow.com/questions/56118941/do-we-have-c20-ranges-library-in-gcc-9/56118997#56118997)) and the next available LTS, `jammy`, currently ships with GCC 11.2 ([source](https://packages.ubuntu.com/jammy/g++)). As we're now using Guix to build our releases, there shouldn't be any adverse effects from our containers having a higher version of `glibc`.

  Additionally, upstream uses 24.04 (`noble`) for their build images ([source](a2317e27b7/ci/test/00_setup_env_native_tsan.sh (L10))) and `jammy` to determine the minimum version to CMake ([source](a2317e27b7/CMakeLists.txt (L5-L6))) (for reference, `focal` ships with CMake 3.16, [source](https://packages.ubuntu.com/focal/cmake)).

  ## Additional Information

  * Builds will no longer run `check-symbols` (and the option to do so, `RUN_SYMBOL_TESTS` has been removed) as portable builds (builds expected for distributions) are built with Guix, which pins its version of `glibc` ([source](396573d09c/contrib/guix/manifest.scm (L152)), currently 2.28), runs `check-symbols` ([source](396573d09c/contrib/guix/libexec/build.sh (L304-L305))), which in turn make sure that it doesn't contain symbols expected in versions higher than `glibc` 2.31 ([source](396573d09c/contrib/devtools/symbol-check.py (L38-L42))).

    Upstream does not use `check-symbols` during their builds nor do we have a reason to (as we no longer using Gitian).

  * CI build failures w.r.t. `pthread_yield` ([build](https://github.com/dashpay/dash/actions/runs/11645989968/job/32437272177?pr=6379#step:7:3136), [build](https://github.com/dashpay/dash/actions/runs/11645989968/job/32430165640#step:7:3157)) should be resolved by rebuilding `bdb4` (see [bitcoin#26423](https://github.com/bitcoin/bitcoin/issues/26423#issuecomment-1296271654)). This problem has only been observed on GitHub CI and locally (the latter resolved by rebuilding depends, I use a separate target triple for testing, `x86_64-jammy-linux-gnu`), GitLab CI has not observed such failures ([build](https://gitlab.com/dashpay/dash/-/jobs/8253943710)).

  ## Breaking changes

  None expected.

  ## Checklist

  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)**
  - [x] I have added or updated relevant unit/integration/functional/e2e tests **(note: N/A)**
  - [x] I have made corresponding changes to the documentation **(note: N/A)**
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  UdjinM6:
    utACK 1592a0f92e
  knst:
    utACK 1592a0f92e
  PastaPastaPasta:
    utACK 1592a0f92e

Tree-SHA512: cbe6505211246c711dc0fd8645b8a4c6123b5ac163341dca4c686f8905a630c57d483a91a6e29bd9e23bac79d774e339181d2cb17bb3affeb5902e5f548ffa54
2024-11-04 10:29:24 -06:00
Kittywhiskers Van Gogh
1592a0f92e
ci: update containers and CI to use Ubuntu 22.04 LTS (jammy) 2024-11-02 21:34:10 +00:00
Kittywhiskers Van Gogh
decbd05b77
ci: stop running check-symbols during builds
Guix runs `check-symbols` during its builds and retains value there as
those builds are expected to run on platforms/distros that have that
pinned version of glibc or higher (pinned in `manifest.scm` as 2.28 and
checked to make sure ABIs present in versions higher than 2.31 aren't
used by `symbol-check.py`).

There's no reason to do this on regular builds, which aren't expected
to be as portable, built in an environment that's much less customizable.
2024-11-02 21:34:10 +00:00
Kittywhiskers Van Gogh
f18e839b2f
build: drop symlinks in immer subtree
reverts:
- fb00300f30
2024-11-02 20:19:50 +00:00
Kittywhiskers Van Gogh
d761111f6c
build: fix gitian builds
reverts:
- 47b32efef2
2024-11-02 17:51:13 +00:00
Kittywhiskers Van Gogh
f70157f5bb
depends: update 'src/immer' to arximboldi/immer@5875f773 as a9f46b32 2024-11-02 17:50:50 +00:00
Kittywhiskers Van Gogh
a9f46b32c3 Squashed 'src/immer/' changes from 9cb6a5a845..5875f7739a
5875f7739a Merge pull request #269 from pinotree/cmake-current-dir
e0c4b1793d cmake: use ${CMAKE_CURRENT_SOURCE_DIR} where possible
d0b79d5cbd Merge pull request #268 from pinotree/drop-findguile
5612ec803d cmake: drop FindGuile.cmake
b60403ca83 Merge pull request #267 from pinotree/system-catch2
eec85078f2 Drop unused copy of Catch2
ac49b71e42 Switch to system Catch2
615ed31635 nix: disable tests & examples
b70f1c27f1 Merge pull request #266 from pinotree/drop-doctest
b133b774d4 Drop the unused doctest copy
168768c5de tests: port dvektor to catch2
8872e233c3 Merge pull request #257 from vector-of-bool/cxx20-ranges-fixes
0b3aaf699b Merge pull request #263 from colugomusic/fix-msvc-explicit-destructor-call
10cd1f3312 Merge pull request #262 from colugomusic/fix-msvc-c2975
daff65041c Trying to satisfy LLVM.
88076f7329 Remove unneeded include
4585522553 Merge branch 'fix-msvc-explicit-destructor-call' of https://github.com/colugomusic/immer into fix-msvc-explicit-destructor-call
5516624d67 Manual destroy_at for C++14
205180bb13 Add missing #include required by gcc
77c2f422fe Fix whitespace
6672e57e26 Remove unused capture default
30fb619ce7 Use destroy_at to call explicit destructor in make_inner_n
813e891e25 Fix MSVC compile error C2975
21cc60ef11 Merge pull request #261 from colugomusic/fix-msvc-c2059
5125b83afb Fix MSVC compile error C2059
9549696683 Merge pull request #260 from arximboldi/fmt-fixes
4871c7455a Merge pull request #256 from dhly-etc/robust-loading
8a165e7bd2 Upgrade Nix in Actions
1b66f4ad2a Fix includes
4513c2f80d Upgrade install-nix-action
5f96a39d0d Merge pull request #259 from tocic/fix/dark_theme_logo
04c7d90fc4 Use alternative logo in dark mode
ae8abe0ce0 Return a direct reference from iterator operator[]
5722567343 Merge pull request #258 from bobkocisko/master
e382feab06 Fixing annoying unused local variable warning
ffb051721b Fixes and tests for C++20 Range compatibility
a983d6fe1a Make pretty-printer loading more robust
d98a68cd6c Merge pull request #255 from dhly-etc/gdb-pretty-printers
7ff66e0934 Add .gdbinit file to autoload pretty printers
9b8e1b340e Add array printer
0220ba4389 Add table printer
17915a5881 Add GDB pretty-printing support
adbb4cd311 Merge pull request #253 from tocic/fix/typos
c69ad466a1 Fix typos
9dad616455 Merge pull request #250 from LilyWangLL/AddConfigVersion
3630ec4080 Add quotes
54ba35145b Add export CMake Config version file
3c527e434b Merge pull request #246 from maierlars/feature/nothrow-move-constructible-flex-vector
119f9d858a Merge pull request #247 from urbanwe/urbanwe-patch-1
ec81042a26 Fix wrong order in operator<(T2, box<T>)
b7756f5e85 Use lambda for initialization.
9c67e60b44 Fixing assertions.
38edbd8be4 Attempt to make flex_vector nothrow move constructible/assignable.
a5991efbe4 Merge pull request #243 from arximboldi/memory-usage
ffef2712f3 Lower constants for memory usage so CI does not timeout
20eb876b80 Add benchmarks for checking CHAMP memory usage
58036b4eae Merge pull request #239 from arximboldi/release-v0.8
a814bcd592 Do not install specific old version of Nix
6b05223054 Upgrade install-nix-action
ad5acab104 Upgrade cachix action
de91bdb28e Prepare release 0.8.0
459854dc80 Merge pull request #238 from arximboldi/add-identity-api
2c8ceb6160 Add identity API
ca78d685ad Merge pull request #236 from DavidKorczynski/cifuzz-int
e870de6c0b Add CIFuzz GitHub action
4100eff397 Merge pull request #235 from arximboldi/more-fuzz-conflict
6e8a4f8f83 Add fuzzers that produce more conflicts
53b1e37e38 Merge pull request #233 from asa/make_gcc_pragma_ignore_clang
75cc8984e2 make clang ignore gcc pragma warning for champ
93ab7151cd Merge pull request #231 from arximboldi/fuzz-move
d5b6bf6b45 Strengthen the fuzzers even further
35c94037d4 Fix issues in map/set erase() found by fuzzer
b43a1ca2ac Fix fuzzer was not doing what we thought it did
048891443c Add set fuzzer that can find if the tree is corrupted by moves
8f105e275c Add map fuzzer that can find if the tree is corrupted by moves
54f0d543dc Merge pull request #230 from Kraks/patch-1
8acee494ba Fix typo in comment
006461c8ec Merge pull request #227 from arximboldi/fix-debug-stats
0e07630e22 Fix debug stats
d98e82d66a Merge pull request #226 from arximboldi/fix-dec-unsafe
ad759c4783 Remove dec_unsafe() from the policies
4a8fd59e35 Remove dec_unsafe() usage in HAMT data-structures
a7b0e23771 Remove usage of dec_unsafe() in RBTS data-structures
e02cbd795e Merge pull request #225 from arximboldi/fix-champ-move
db3ea447ad Fix sometimes HAMTs would move out values that it should not!
34deab8781 Fix iteration over data-structures would sometimes allow mutation!
e5d79ed80e Merge pull request #222 from arximboldi/more-meta-improvements
6b57f13664 Add update_if_exists method to map and table and related transients
f3cebc63a1 Fix table and table_transient update()
bd1f0c00c0 Improve debug stats API
ad73ea14bf Merge pull request #221 from arximboldi/champ-stats
893c08461a Add tools for printing statistics about trees
037b34afe3 Fix memory leak
79ebe07f31 Merge pull request #220 from arximboldi/map-leak
c4be744a49 Try something
c37693ac4a Remove vestige
1c780ba19b Fix memory leak
30ce53b4df Add test for memory leak found by oss-fuzz
2a32d5db4d Add update_move operation to map fuzzer
d22262967a Merge pull request #216 from arximboldi/hamt-transients-faster-rc-sub
1897252813 Remove vestige
f0defde7dd Ensure that champ update operations move the payload in the value
175c05fb3a Fix #219, ambiguous calls to destroy_n
c25a272ac7 Move objects whenever possible during champ erasure operations
95889a7aa2 Merge pull request #218 from cyrilRomain/master
898f7d8e82 Fix -fno-exceptions build (regression from 35147686)
1bbfb46bf3 Merge pull request #217 from arximboldi/hamt-transients-faster-rc
9caf11101a Fix ambiguities when compiling in C++17 mode
27132d5183 Mark a bunch of functions as noexcept
d004c6e4bf Fix implementation of unordered_copy
e3ddbb7a98 Optimize our own implementation of uninitialized_copy
778ad6718f Use std::copy when possible, our own uninitialized_copy elsewhere
265d79a5ba Our own implementations for uninitialied_... are better, use always
54ff4a21a7 Improve implementation of std shims
3514768617 Use standard library implementations of shims whenever possible
98d4f983cb Move values when node can be mutated but needs realloc (champ::update_mut)
a89f7c98c6 Move values when node can be mutated but needs realloc (champ::add_mut)
5e9fe0b347 Fix table documentation header
72be85b931 Merge pull request #214 from arximboldi/table-fixes
1f41bbf0ac Improve sequential initialization of HAMTs
4736697d3b Update the documentation of HAMT-based transients
efc91fe724 Make immer::table and table_transient use mutation when possible
00f9e49882 Add missing link table_transient in the documentation
b8dbc6ab96 Merge pull request #213 from arximboldi/sub-transients
f5ebe48b13 Add benchmarks for HAMT erasure
9e62f8ccd5 Ensure that edit markers are set properly during transient updates
175edad908 Sketch mutable removal from HAMTs
815541445d Merge pull request #210 from deadb0d4/single_hash_index
6cc2b39159 Merge pull request #212 from arximboldi/more-transients
9985fc131e review: add  to docs/container & fix update docs
002f4e6ba5 Fix mutable HAMT insertion with conflicts
dd8a3ac8c5 Test more exception safety of mutable operations on vectors
0f72f261aa Style: clang-format
416f4c71c4 Implement transients for map update()
8f0b8a043f Merge branch 'master' into single_hash_index
3a38bd7662 add docs & run clang-format
dbc96d6fc4 add test stub for table_transient
db88f93ed5 cosmetics + table tests
70a3620c4e Merge pull request #211 from arximboldi/fix-map-leak
54037e1aaf Fix sanitizers were not properly enabled in CI
cf20d291e5 Fix memory leak when mutating inner nodes
88cf946cfc Merge pull request #209 from arximboldi/map-add-transience
cb76e80313 add headers + examples
8f01c1babe cosmetic fixes
982aa1f6dc Fix insertion benchmarks
5f42f9069d Mutate collision nodes in-place when possible
7fd0ec4d8d Mutate champ nodes values in place when possible
0c0d313c40 Fix potential destruction of uninitialized values
91d065c9bf Reuse same-sized inner nodes during HAMT insertions
3ea3ae9c45 Sketch implementation interface for transient insertion
e3744032a8 Merge pull request #208 from arximboldi/map-transients
22323150fb Add move and transient versions for the HAMT insertion benchmarks
a56e6f8007 Style: clang-format
a9a672bfb0 Add naive implementation of map and set transients
ca255452c3 Add move-based updates on immutable maps and sets
eb5056c4cb Add map and set range constructors
440f7519b2 Sketch map and set transient types
6b27170212 Fix compiling some tests would crash
b38c67b3a1 Merge pull request #206 from audulus/spm
b3139b4055 Immer is compatible with C++14
380dc52dfc Add spm job
9370c89597 Work on SPM support.
a1271fa712 Merge pull request #202 from philipcraig/patch-1
9af8724378 Update README.rst
9c7bb910a2 Update README.rst
88887fd9a5 Update README.rst
9da861dea5 Update memory.rst
fa61a3ed9d Update atom.hpp
d7dd8a729f Update transients.rst
3ceb4be6a1 Update map.hpp
e1d29d0dad Update vector.hpp
3d12e12cbb Update array.hpp
749035b5c9 Update array.hpp
1f9910eae1 fix typo
d2648aceea Merge pull request #201 from mvtec-richter/patch-1
70d6b6eb16 Fix typo in documentation of diff
0fcf66743e Tweak diff docs
ef80e6c5f7 Merge pull request #200 from arximboldi/diff-polish
7ba2196e4c Add missing header
36178a7aa6 Add the diffing algorithm to the fuzzers
af99b84519 Document diff algorithm
25b20e77c1 Simplify diff algorithm interface
3db544b73a Avoid passing Differ template param, use universal references
d372683b7a Merge pull request #199 from mvtec-richter/add-diff-method-to-map
f23dc6cdf7 Remove incorrect usage of std::forward
a4482d56e0 Introduce struct differ
f91922ec95 Add diff to set and avoid std::pair in champ
0f8eae238c Add diffing algorithm to maps
42e6beafed Merge pull request #197 from bollu/master
926098ccc8 Typo fix: frony -> front
24214158f5 Merge pull request #196 from arximboldi/nix-build-issues
9b770ec715 Do not try to use a build dir, because we have a BUILD file
98a8f1b7a5 Do not rely on git to fetch the code locally
2f12be4d65 Allow changing nixpkgs version
d6d27de64a Merge pull request #193 from arximboldi/fix-github-actions
6b299fc0a5 Upgrade Nix related actions
a3617d5f3b Disable ssh stuff when it's not me
5adcd67e55 Ignore Nix result links
36d1000deb Fix comment

git-subtree-dir: src/immer
git-subtree-split: 5875f7739a6c642ad58cbedadb509c86d421217e
2024-11-02 17:50:50 +00:00
pasta
396573d09c
Merge #6375: fix: devnet stuck on block 2 with crash
50ea5e13f5 fix: cbtx tx as special transaction can't be retrieved before DIP0003 is activated (Konstantin Akimov)

Pull request description:

  ## Issue being fixed or feature implemented
  Failure on devnet:

  ![image](https://github.com/user-attachments/assets/66163c3d-e818-478c-8915-48889317ecd1)

  +extra logs haven't got to screenshot:
  ```
  2024-10-31T13:19:21Z CreateNewBlock(): total size 1000 txs: 0 fees: 0 sigops 100
  2024-10-31T13:19:21Z Posix Signal: Aborted
  ```

  Locally similar error is caught with stacktrace:

          Assertion failure:
            assertion: (tx.nType == T::SPECIALTX_TYPE)
            file: ./evo/specialtx.h, line: 33
            function: std::optional<_Tp> GetTxPayload(const TxType&, bool) [with T = CCbTx; TxType = CTransaction]
             0#: (0x5CE686FB3AB0) stacktraces.cpp:655 - __wrap___assert_fail
             1#: (0x5CE686BB9120) specialtx.h:33      - std::optional<CCbTx> GetTxPayload<CCbTx, CTransaction>(CTransaction const&, bool)
             2#: (0x5CE686BB9120) cbtx.cpp:463        - GetCoinbaseTx(CBlockIndex const*)
             3#: (0x5CE686BB916D) cbtx.cpp:470        - GetNonNullCoinbaseChainlock(CBlockIndex const*)
             4#: (0x5CE686BB92AA) optional:469        - std::_Optional_base_impl<std::pair<CBLSSignature, unsigned int>, std::_Optional_base<std::pair<CBLSSignature, unsigned int>, false, false> >::_M_is_engaged() const
             5#: (0x5CE686BB92AA) optional:986        - std::optional<std::pair<CBLSSignature, unsigned int> >::has_value() const
             6#: (0x5CE686BB92AA) cbtx.cpp:401        - CalcCbTxBestChainlock(llmq::CChainLocksHandler const&, CBlockIndex const*, unsigned int&, CBLSSignature&)
             7#: (0x5CE686D36318) miner.cpp:233       - BlockAssembler::CreateNewBlock(CScript const&)

  ## What was done?
  Added check if DIP0003 is indeed activated before retrieving Chainlock of previous block.

  ## How Has This Been Tested?
  No crash observed locally

  ## Breaking Changes
  N/A

  ## Checklist:
  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas
  - [x] I have added or updated relevant unit/integration/functional/e2e tests
  - [x] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone

ACKs for top commit:
  UdjinM6:
    light ACK 50ea5e13f5 (reindexed on mainnet and testnet with `-assumevalid` set to pre-v20 block hashes, no issues)
  PastaPastaPasta:
    utACK 50ea5e13f5

Tree-SHA512: a51c1d1b56c5d1a2effab5e6dcf76f87a52eb812ba7bafb0d0dbf2eb5172ae6513be891efeec1f8ecf71b3976b2a6e309e4a61602f5a3cc3c817f869d65a3f0d
2024-11-02 11:41:24 -05:00
Kittywhiskers Van Gogh
e4ee302d6e
revert: fix gitian builds
reverts:
- 47b32efef2.
2024-11-02 16:39:58 +00:00
Kittywhiskers Van Gogh
fb00300f30
revert: drop symlinks in immer subtree
reverts:
 - c09981d8ad.
2024-11-02 16:39:56 +00:00
Konstantin Akimov
50ea5e13f5
fix: cbtx tx as special transaction can't be retrieved before DIP0003 is activated
It's true, let's add a check here before asking GetTxPayload which causes assert

    Assertion failure:
      assertion: (tx.nType == T::SPECIALTX_TYPE)
      file: ./evo/specialtx.h, line: 33
      function: std::optional<_Tp> GetTxPayload(const TxType&, bool) [with T = CCbTx; TxType = CTransaction]
       0#: (0x5CE686FB3AB0) stacktraces.cpp:655 - __wrap___assert_fail
       1#: (0x5CE686BB9120) specialtx.h:33      - std::optional<CCbTx> GetTxPayload<CCbTx, CTransaction>(CTransaction const&, bool)
       2#: (0x5CE686BB9120) cbtx.cpp:463        - GetCoinbaseTx(CBlockIndex const*)
       3#: (0x5CE686BB916D) cbtx.cpp:470        - GetNonNullCoinbaseChainlock(CBlockIndex const*)
       4#: (0x5CE686BB92AA) optional:469        - std::_Optional_base_impl<std::pair<CBLSSignature, unsigned int>, std::_Optional_base<std::pair<CBLSSignature, unsigned int>, false, false> >::_M_is_engaged() const
       5#: (0x5CE686BB92AA) optional:986        - std::optional<std::pair<CBLSSignature, unsigned int> >::has_value() const
       6#: (0x5CE686BB92AA) cbtx.cpp:401        - CalcCbTxBestChainlock(llmq::CChainLocksHandler const&, CBlockIndex const*, unsigned int&, CBLSSignature&)
       7#: (0x5CE686D36318) miner.cpp:233       - BlockAssembler::CreateNewBlock(CScript const&)
       8#: (0x5CE6869E450B) stl_tree.h:733      - std::_Rb_tree<boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag>, boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag>, std::_Identity<boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag> >, CompareIteratorByHash, std::allocator<boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag> > >::_M_mbegin() const
       9#: (0x5CE6869E450B) stl_tree.h:737      - std::_Rb_tree<boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag>, boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag>, std::_Identity<boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag> >, CompareIteratorByHash, std::allocator<boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag> > >::_M_begin()
      10#: (0x5CE6869E450B) stl_tree.h:982      - std::_Rb_tree<boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag>, boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag>, std::_Identity<boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag> >, CompareIteratorByHash, std::allocator<boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag> > >::~_Rb_tree()
      11#: (0x5CE6869E450B) stl_set.h:283       - std::set<boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag>, CompareIteratorByHash, std::allocator<boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<CTxMemPoolEntry, std::allocator<CTxMemPoolEntry> > > > > >, boost::multi_index::detail::bucket_array<std::allocator<CTxMemPoolEntry> >, boost::multi_index::detail::hashed_unique_tag, boost::multi_index::detail::hashed_index_global_iterator_tag> > >::~set()
      12#: (0x5CE6869E450B) miner.h:146         - BlockAssembler::~BlockAssembler()
      13#: (0x5CE6869E450B) mining.cpp:174      - generateBlocks
      14#: (0x5CE6869E4C6E) prevector.h:479     - prevector<28u, unsigned char, unsigned int, int>::~prevector()
      15#: (0x5CE6869E4C6E) script.h:393        - CScript::~CScript()
      16#: (0x5CE6869E4C6E) mining.cpp:300      - operator()
      17#: (0x5CE6869E4C6E) invoke.h:61         - __invoke_impl<UniValue, generatetoaddress()::<lambda(const RPCHelpMan&, const JSONRPCRequest&)>&, const RPCHelpMan&, const JSONRPCRequest&>
      18#: (0x5CE6869E4C6E) invoke.h:116        - __invoke_r<UniValue, generatetoaddress()::<lambda(const RPCHelpMan&, const JSONRPCRequest&)>&, const RPCHelpMan&, const JSONRPCRequest&>
      19#: (0x5CE6869E4C6E) std_function.h:291  - _M_invoke
      20#: (0x5CE686F48F8E) util.cpp:541        - RPCHelpMan::HandleRequest(JSONRPCRequest const&) const
      21#: (0x5CE68697CD18) univalue.h:17       - UniValue::operator=(UniValue&&)
      22#: (0x5CE68697CD18) server.h:107        - CRPCCommand::CRPCCommand(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, RPCHelpMan (*)())::{lambda(JSONRPCRequest const&, UniValue&, bool)#1}::operator()(JSONRPCRequest const&, UniValue&, bool) const
      23#: (0x5CE68697D100) std_function.h:292  - std::_Function_handler<bool (JSONRPCRequest const&, UniValue&, bool), CRPCCommand::CRPCCommand(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, RPCHelpMan (*)())::{lambda(JSONRPCRequest const&, UniValue&, bool)#1}>::_M_invoke(std::_Any_data const&, JSONRPCRequest const&, UniValue&, bool&&)
      24#: (0x5CE686A876C0) std_function.h:591  - std::function<bool (JSONRPCRequest const&, UniValue&, bool)>::operator()(JSONRPCRequest const&, UniValue&, bool) const
      25#: (0x5CE686A876C0) server.cpp:622      - ExecuteCommand
      26#: (0x5CE686A889C6) server.cpp:511      - ExecuteCommands
      27#: (0x5CE686A889C6) server.cpp:543      - CRPCTable::execute(JSONRPCRequest const&) const
      28#: (0x5CE686C951B5) httprpc.cpp:247     - HTTPReq_JSONRPC
      29#: (0x5CE686CA5406) unique_ptr.h:93     - std::default_delete<HTTPClosure>::operator()(HTTPClosure*) const
      30#: (0x5CE686CA5406) unique_ptr.h:398    - std::unique_ptr<HTTPClosure, std::default_delete<HTTPClosure> >::~unique_ptr()
      31#: (0x5CE686CA5406) httpserver.cpp:107  - WorkQueue<HTTPClosure>::Run()
    dashd: ./evo/specialtx.h:33: std::optional<_Tp> GetTxPayload(const TxType&, bool) [with T = CCbTx; TxType = CTransaction]: Assertion `(tx.nType == T::SPECIALTX_TYPE)' failed.
2024-10-31 21:28:54 +07:00
pasta
5dbe58c996
Merge #6370: backport: merge bitcoin#23499, #23832, #24136, #24265, #23819, #23595, #24486, #15423, #24784, #24956, #25016, #25060 (auxiliary backports: part 21)
02320032c7 merge bitcoin#25060: add LIFETIMEBOUND to GetFirstStoredBlock()::start_time (Kittywhiskers Van Gogh)
cfda9e5eb5 merge bitcoin#25016: GetFirstStoredBlock() and getblockchaininfo follow-ups (Kittywhiskers Van Gogh)
99d028e9e1 merge bitcoin#24956: Call CHECK_NONFATAL only once where needed (Kittywhiskers Van Gogh)
87b556d322 refactor: use loop to iterate through `SoftForkDescPushBack` args (Kittywhiskers Van Gogh)
80615b8c01 merge bitcoin#24784: deduplicate integer serialization in RollingBloom benchmark (Kittywhiskers Van Gogh)
092a11e2d1 merge bitcoin#15423: Query Tor for correct -onion configuration (Kittywhiskers Van Gogh)
74dceb3c5c merge bitcoin#24486: dedup sqlite blob binding (Kittywhiskers Van Gogh)
aa945c2c1d merge bitcoin#23595: Add ParseHex<std::byte>() helper (Kittywhiskers Van Gogh)
c2defe7210 merge bitcoin#23819: don't serialize block hash twice (Kittywhiskers Van Gogh)
9a8d6e149f merge bitcoin#24265: Drop StripRedundantLastElementsOfPath() function (Kittywhiskers Van Gogh)
2d299f128a merge bitcoin#24136: Extract CTxIn::MAX_SEQUENCE_NONFINAL constant, rework BIP 65/68/112 docs (Kittywhiskers Van Gogh)
9aacee78ae merge bitcoin#23832: Changes time variables from int to chrono (Kittywhiskers Van Gogh)
06bf649e1b merge bitcoin#23499: Add interfaces::Node::broadCastTransaction method (Kittywhiskers Van Gogh)

Pull request description:

  ## Breaking Changes

  None expected.

  ## Checklist

  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)**
  - [x] I have added or updated relevant unit/integration/functional/e2e tests
  - [x] I have made corresponding changes to the documentation **(note: N/A)**
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  UdjinM6:
    utACK 02320032c7

Tree-SHA512: b633e1caac95e565d43e28cef7c915f65952fbabdf55624090bc587c75b84fc04474bb6cd8625219ba828da172391c3d2d1aa6db998927312055c82caaad7ba0
2024-10-29 20:12:53 -05:00
pasta
88a8e7a077
Merge #6374: test: optimize feature asset locks test
2d05df04fd refactor: use irange (pasta)
4cc3ee6286 test: update feature_asset_locks.py to reflect changes (pasta)
bfe1d2768d refactor: activate DEPLOYMENT_WITHDRAWALS sooner on regtest (pasta)
c8342e1b55 refactor: pull LimitBlocksToTrace into CChainParams (reduce regtest to 100) (pasta)

Pull request description:

  ## Issue being fixed or feature implemented
  Minimize number of blocks needed to be mined in asset locks test

  Based on CI test goes from about 270s -> 213s

  ## What was done?
  Reduce number of blocks needed by reducing hard fork activation points

  ## How Has This Been Tested?
  Ran test locally, built

  ## Breaking Changes
  Breaking for regtests, nothing else.

  ## Checklist:
    _Go over all the following points, and put an `x` in all the boxes that apply._
  - [ ] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  knst:
    utACK 2d05df04fd
  UdjinM6:
    utACK 2d05df04fd

Tree-SHA512: b52ec2570912ccb578b14baa4ef5c6e69454db7d83e7476c4451bca62b0c57e4c961e4bfafc9e5b0b4eebd6226840ac00505d3787316d7bdaeb64cb66b08fb30
2024-10-29 19:38:46 -05:00
pasta
841ea27d7b
Merge #6364: backport: trivial 2024 10 25 pr3
fbc0bce2e6 Merge bitcoin/bitcoin#29665: build, depends: Fix `libmultiprocess` cross-compilation (fanquake)
59a214590f Merge bitcoin/bitcoin#29747: depends: fix mingw-w64 Qt DEBUG=1 build (fanquake)
bdb2fa6773 Merge bitcoin/bitcoin#29671: index: avoid "failed to commit" errors on initialization (Ava Chow)
65377eab9e Merge bitcoin/bitcoin#29192: Weaken serfloat tests (fanquake)
4122404b81 Merge bitcoin/bitcoin#28891: test: fix `AddNode` unit test failure on OpenBSD (fanquake)
812ef53685 Merge bitcoin/bitcoin#25677: refactor: make active_chain_tip a reference (MacroFake)
34e12fa3e7 Merge bitcoin/bitcoin#24564: doc: Clarify that CheckSequenceLocksAtTip is a validation function (glozow)
d529751f47 Merge bitcoin/bitcoin#24788: doc: Add gpg key import instructions for Windows (fanquake)
61bae780b6 Merge bitcoin/bitcoin#24784: refactor: deduplicate integer serialization in RollingBloom benchmark (MarcoFalke)

Pull request description:

  ## Issue being fixed or feature implemented
  Trivial backports

  ## What was done?

  ## How Has This Been Tested?
  built locally

  ## Breaking Changes

  ## Checklist:
    _Go over all the following points, and put an `x` in all the boxes that apply._
  - [ ] I have performed a self-review of my own code
  - [ ] I have commented my code, particularly in hard-to-understand areas
  - [ ] I have added or updated relevant unit/integration/functional/e2e tests
  - [ ] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  UdjinM6:
    utACK fbc0bce2e6

Tree-SHA512: 731f70b747712810d4f74fe64a90139b02ddb62e9ac260705fa2588595feb19bd6e5ffed521fd878bacaab0015683e582fed19ed1855c3e955f93cd223862a17
2024-10-29 17:15:33 -05:00
pasta
5d2fde8fb1
Merge #6373: fix: multiple minor errors for Dash Core pre v22
2026c59d3c perf: re-order functional tests to make slowest one to run faster (Konstantin Akimov)
d35ce1e5d9 fix: uncomment sethdseed to follow-up for #6017 and bitcoin#12560 (Konstantin Akimov)
71cd68d038 feat: run rpc_quorum.py with only one type of wallet (Konstantin Akimov)
af1923f5c2 fix: missing governance.dat, spork.dat do not trigger a loud error message in logs (Konstantin Akimov)
678db6f43e fix: error in log if no masternode's registered yet "ERROR! Failed to get payees for block at height" (Konstantin Akimov)
80c5481c3e fix: use unique port for interface_zmq_dash.py - follow-up for bitcoin/bitcoin#26805 (Konstantin Akimov)
87caafb92f fix: dashify doc/JSON-RPC-interface.md to follow-up bitcoin#27225 (Konstantin Akimov)
237460c533 fix: initialization of CMerkleBlock() due to misusage of default argument to follow-up bitcoin#30552 (Konstantin Akimov)

Pull request description:

  ## Issue being fixed or feature implemented

  It fixes several minor issues:

   - error messages in logs on regtest:

         [httpworker.0] [masternode/payments.cpp:116] [IsTransactionValid] CMNPaymentsProcessor::IsTransactionValid -- ERROR! Failed to get payees for block at height 110
         [httpworker.0] [masternode/payments.cpp:278] [IsBlockPayeeValid] CMNPaymentsProcessor::IsBlockPayeeValid -- Valid masternode payment at height 110: CTransaction(hash=837e35fab5, ver=3, type=5, vin.size=1, vout.size=1, nLockTime=0, vExtraPayload.size=70)
                CTxIn(COutPoint(0000000000000000000000000000000000000000000000000000000000000000, 4294967295), coinbase 016e0101)
                CTxOut(nValue=500.00000000, scriptPubKey=76a9148708dff2bf8b31363cb4201d)

   - error messages for non-existing files for first run:

          [      init] [util/system.h:57] [error] ERROR: CoreRead: Failed to open file DASH/node0/regtest/governance.dat

   - non-dashified `bitcoin-cli` in `doc/JSON-RPC-interface.md`
   - incorrect initialization of `CMerkleBlock` in functional tests which can cause an un-explainable failure
   - use random ports for `interface_zmq_dash.py` to let tests run simultaneously
   - fix missing todo about using `sethdseed` after #6017
   - optimization of local run of functional tests (slowest go first)
  ## What was done?
  See each commit

  ## How Has This Been Tested?
  Run unit/functional tests

  ## Breaking Changes
  N/A

  ## Checklist:
    _Go over all the following points, and put an `x` in all the boxes that apply._
  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas
  - [x] I have added or updated relevant unit/integration/functional/e2e tests
  - [x] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  UdjinM6:
    utACK 2026c59d3c
  PastaPastaPasta:
    utACK 2026c59d3c

Tree-SHA512: 81f7ac0160203bd0a636869402108ca9b94c81aa966263b64ce74cbc69ac6a875ab111cb078a02ddbfd9408caa418c612cb9c7fb9a666786e14095dc378065c4
2024-10-29 13:50:04 -05:00
pasta
2d05df04fd
refactor: use irange 2024-10-29 13:21:05 -05:00
pasta
02ec0fd284
Merge #6372: backport: merge bitcoin#29823, #30270 (update 'src/minisketch' to sipa/minisketch@eb37a9b8)
5e65bb45a7 merge bitcoin#30270: update subtree to eb37a9b8 (Kittywhiskers Van Gogh)
ef10e83d4d Squashed 'src/minisketch/' changes from 3472e2f5ec..eb37a9b8e7 (Kittywhiskers Van Gogh)
94dca7f9ae merge bitcoin#29823: update subtree to 3472e2f5e (Kittywhiskers Van Gogh)
9540ecbc34 Squashed 'src/minisketch/' changes from a571ba20f9..3472e2f5ec (Kittywhiskers Van Gogh)

Pull request description:

  ## Additional information

  Unexpected failure was found in UBSan unit test run originating from minisketch tests ([build](https://gitlab.com/dashpay/dash/-/jobs/8206813511#L3512)), resolved in subtree with https://github.com/sipa/minisketch/pull/81 and updated upstream in https://github.com/bitcoin/bitcoin/pull/29823.  This pull request updates the subtree to latest subtree pulls done on upstream `master` (as of this writing, [`da10e0ba`](da10e0bab4)).

  Special thanks to knst for reporting this bug! 🎉

  ## Breaking Changes

  None expected.

  ## Checklist

  - [x] I have performed a self-review of my own code
  - [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)**
  - [x] I have added or updated relevant unit/integration/functional/e2e tests **(note: N/A)**
  - [x] I have made corresponding changes to the documentation **(note: N/A)**
  - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_

ACKs for top commit:
  UdjinM6:
    utACK 5e65bb45a7

Tree-SHA512: be3c75436425c8662d6af46641a6fc744d01043a832884b29aa9767dd4b9090cef93bcb31355032131392a6ccf29cbbcb771a5786c654f26f4fa0a2d5f0e8a5f
2024-10-29 13:07:28 -05:00
fanquake
fbc0bce2e6
Merge bitcoin/bitcoin#29665: build, depends: Fix libmultiprocess cross-compilation
2de2ea2ff63b97eacb23234932c6e1f1f65e4494 build, depends: Fix `libmultiprocess` cross-compilation (Hennadii Stepanov)

Pull request description:

  On the master branch @ 3b12fc7bcd94cf214984911f68612feb468d5404, the following command fails:
  ```
  $ make -C depends libmultiprocess HOST=arm64-apple-darwin MULTIPROCESS=1
  ...
  [100%] Linking CXX executable mpgen
  ...
  clang++: error: linker command failed with exit code 1 (use -v to see invocation)
  ...
  ```

  This PR prevents building all default targets that include `mpgen`, which expectedly fails to link when cross-compiling.

ACKs for top commit:
  ryanofsky:
    Code review ACK 2de2ea2ff63b97eacb23234932c6e1f1f65e4494
  fanquake:
    ACK 2de2ea2ff63b97eacb23234932c6e1f1f65e4494 - I checked that this fixes the macOS cross-compilation issue. I'm assuming these packages are also likely to change further in the (near) future, given the changes going in upstream: https://github.com/chaincodelabs/libmultiprocess/pulls?q=is%3Apr+is%3Aclosed.

Tree-SHA512: 563551afbe483c923b52c6171f9d73bcc30bc4febd821b5abfe8aadb2ac601b94c2d10a73746ace3710d9f0afa4798eb090e77ccb1ae66a819495912802d91c9
2024-10-29 13:01:24 -05:00
fanquake
59a214590f
Merge bitcoin/bitcoin#29747: depends: fix mingw-w64 Qt DEBUG=1 build
b7e7e727abd86104ee58beb648a94e2f453d1f6d depends: fix mingw-w64 Qt DEBUG=1 build (fanquake)

Pull request description:

  The issue is that compilation is done with `x86_64-w64-mingw32-g++-posix`, but then linking is done with `x86_64-w64-mingw32-g++`.

  I'm guessing this has been broken since #24131 (01d1845a80ae48d741deea695ddce95d940ab0d8), but have not checked.

  Fixes #29734.
  Unblocks #29527 (`DEBUG=1` builds can be tested).

ACKs for top commit:
  hebasto:
    ACK b7e7e727abd86104ee58beb648a94e2f453d1f6d, tested on Ubuntu 22.04 with the [installed](https://github.com/bitcoin/bitcoin/issues/29734#issuecomment-2022852344) `g++-mingw-w64-x86-64` package.
  TheCharlatan:
    ACK b7e7e727abd86104ee58beb648a94e2f453d1f6d

Tree-SHA512: 9e24e84046c0489c20971bb9c68d1a643c233837193c184f61bff79dfc8d7397a5c5526ac1a205ad423920f2589559cd01cb104ceb7f89515bb6421510d82ca9
2024-10-29 13:01:24 -05:00
Ava Chow
bdb2fa6773
Merge bitcoin/bitcoin#29671: index: avoid "failed to commit" errors on initialization
f65b0f6401091e4a4ca4c9f4db1cf388f0336bad index: Move last_locator_write_time and logging to end of threadsync loop (Fabian Jahr)

Pull request description:

  In the index sync thread, when initializing an index for the first time, stop callng BaseIndex::Commit when m_best_block_index is null, to avoid a spurious "failed to commit" error from that function. This error started happening in commit 7878f97bf1 from https://github.com/bitcoin/bitcoin/pull/25494 and was reported by pstratem in https://github.com/bitcoin/bitcoin/pull/26903 with an alternate fix.

ACKs for top commit:
  achow101:
    ACK f65b0f6401091e4a4ca4c9f4db1cf388f0336bad
  ryanofsky:
    Code review ACK f65b0f6401091e4a4ca4c9f4db1cf388f0336bad. Just moved log "Syncing" log line since last commit to avoid having to call now() twice.
  furszy:
    ACK f65b0f6401091e4a4ca4c9f4db1cf388f0336bad
  TheCharlatan:
    ACK f65b0f6401091e4a4ca4c9f4db1cf388f0336bad

Tree-SHA512: afa8f05786318d36346d167ff53ea0b3bc8abdb0ad04465d199dc3eb91e9f837369e24fcb7e24b5757b02d698ec504e61da6ac365eaf006c874fc07a424a7e20
2024-10-29 13:01:24 -05:00
fanquake
65377eab9e
Merge bitcoin/bitcoin#29192: Weaken serfloat tests
6e873df3478f3ab8f67d1b9339c7e990ae90e95b serfloat: improve/simplify tests (Pieter Wuille)
b45f1f56582fb3a0d17db5014ac57f1fb40a3611 serfloat: do not test encode(bits)=bits anymore (Pieter Wuille)

Pull request description:

  Closes #28941.

  Our current tests for serfloat verify two distinct properties:
  1. Whether they roundtrip `double`->`uint64_t`->`double` (excluding NaN values) on all systems.
  2. Whether on systems with a typical floating point unit that encoding matches the hardware representation, as before v22.0, we would dump the hardware representation directly to disk and we wanted to retain compatibility with that.

  #28941 seems to show that the second property doesn't always hold, but just for "subnormal" numbers (below $2^{-1021}$). Since we don't care about encoding these numbers, we could exclude such subnormal numbers from the hardware-identical representation test, but this PR goes further and just drops the second property entirely, as I don't think we care about edge-case compatibility with pre-v22.0 code for fee_estimates.dat (the only place it is used).

ACKs for top commit:
  glozow:
    ACK 6e873df3478f3ab8f67d1b9339c7e990ae90e95b
  fanquake:
    ACK 6e873df3478f3ab8f67d1b9339c7e990ae90e95b - It's not as much of a priority, but I think we could still backport this.

Tree-SHA512: e18ceee0753a7ee7e999fdfa10b014dc5bb67b6ef79522a0f8c76b889adcfa785772fc26ed7559bcb5a09a9938e243bb54eedd9549bc59080a2c8090155e2267
2024-10-29 13:01:24 -05:00
fanquake
4122404b81
Merge bitcoin/bitcoin#28891: test: fix AddNode unit test failure on OpenBSD
007d6f0e85bc329040bb405ef6016339518caa66 test: fix `AddNode` unit test failure on OpenBSD (Sebastian Falbesoner)

Pull request description:

  On OpenBSD 7.4, the following check of the unit test `test_addnode_getaddednodeinfo_and_connection_detection` currently fails:
  ```
  BOOST_CHECK(!connman->AddNode({/*m_added_node=*/"127.1", /*m_use_v2transport=*/true}));
  ```
  The reason for that is that this OS seemingly doesn't support the IPv4 shorthand notation with omitted zero-bytes:

  ```
  $ ping 127.1
  ping: no address associated with name
  ```

  As a simple fix, this PR skips the check for this with a pre-processor #if. On NetBSD and FreeBSD, `127.1` is resolved correctly to localhost and hence the test passes (thanks to vasild for verifying on the latter!).

ACKs for top commit:
  vasild:
    ACK 007d6f0e85bc329040bb405ef6016339518caa66

Tree-SHA512: 8ab8393c490e1ecc140e8ff74f6fa4d26d0dd77e6a77a241cd198314b8c5afee7422f95351ca05f4c1742433dab77016a8ccb8d28062f8edd4b703a918a2bbda
2024-10-29 13:01:24 -05:00
MacroFake
812ef53685
Merge bitcoin/bitcoin#25677: refactor: make active_chain_tip a reference
9376a6dae41022874df3b9302667796a9fb7b81d refactor: make active_chain_tip a reference (Aurèle Oulès)

Pull request description:

  This PR fixes a TODO introduced in #21055.

  Makes `active_chain_tip` argument in `CheckFinalTxAtTip` function a reference instead of a pointer.

ACKs for top commit:
  dongcarl:
    ACK 9376a6dae41022874df3b9302667796a9fb7b81d

Tree-SHA512: c36d1769e0b9598b7f79334704b26b73e958d54caa3bd7e4eff954f3964fcf3f5e3a44a5a760497afad51b76e1614c86314fe035e4083c855e3574a620de7f4d
2024-10-29 13:01:24 -05:00