Commit graph

28579 commits

Author SHA1 Message Date
fanquake
de3ae78eff
ci: increase CPU count of sanitizer job to increase memory limit
According to the docs,
https://cirrus-ci.org/guide/linux/#linux-containers, "For each CPU you
can't get more than 4G of memory.", thus if we want this job to have
24GB of memory, we need to increase the CPU count to 6.
2021-04-06 08:40:24 +08:00
fanquake
1a011b3a82
build: remove -Wdeprecated-register from NOWARN flags
The register keyword was deprecated in C++11, and removed in C++17. Now
that we require C++17, we shouldn't have to supress warnings for a
non-existant feature.
2021-04-06 08:12:22 +08:00
fanquake
511e58223b
Merge #21565: build: make bitcoin_qt.m4 more generic
fecb3723b6 build: additional PKG_CHECK_MODULES calls in bitcoin_qt.m4 (fanquake)
a53eff3ce5 build: misc doc changes in bitcoin_qt.m4 (fanquake)
340fa6c0ff build: set QT_*_CFLAGS & QT_*_LIBS in PKG_CHECK_MODULES() calls (fanquake)
4b8ad97c5b build: use QT_*_LIBS rather than passing lib names (fanquake)
13313b2904 scripted-diff: replace Qt5 with ${qt_lib_prefix} in _BITCOIN_QT_CHECK_STATIC_LIBS (fanquake)
477df3623c build: reorder libs in _BITCOIN_QT_CHECK_STATIC_LIBS (move-only) (fanquake)

Pull request description:

  These are some small changes to simplify this code before we may end up supporting Qt6. Replaces usages of `Qt5` with `qt_lib_prefix`, minor docs cleanups and takes care of [a suggestion](https://github.com/bitcoin/bitcoin/pull/21376#discussion_r590693514) left over from #21376.

  Guix builds:
  ```bash
  8749dca4a86c39607ff86b0107b76daea60d415a15b5022824f4a4469c6edc37  output/bitcoin-fecb3723b63d-aarch64-linux-gnu-debug.tar.gz
  7b162ad6d953ceed9402f5fef03a8199a76c6dd300a71b03c1814c33ce0126f6  output/bitcoin-fecb3723b63d-aarch64-linux-gnu.tar.gz
  869c42616320fc5bb25e942d7e20c0a8a4b8510939f8f8f6021a784e4afda83e  output/bitcoin-fecb3723b63d-arm-linux-gnueabihf-debug.tar.gz
  278b1481045e93b3ac7c31ae14ea3b6a3030391c2abc90e04ab80072f4c33dd3  output/bitcoin-fecb3723b63d-arm-linux-gnueabihf.tar.gz
  e5501939838f930bf5d5a6da4f6d3665c008d736aa916ef0e7e0e06db91e1a36  output/bitcoin-fecb3723b63d-osx-unsigned.dmg
  834a94ea3fbc5e090618842b339b301bebd622d1f392918f0f500ec6637733ac  output/bitcoin-fecb3723b63d-osx-unsigned.tar.gz
  6cf70af01a48bea9270e6883ed15ce458c46c6840f826414df7a244fffa3338d  output/bitcoin-fecb3723b63d-osx64.tar.gz
  d80e9e2789fdee931f80c049c70912e9ff146d5fe2ae7bcd26244d7fe5dd4910  output/bitcoin-fecb3723b63d-powerpc64-linux-gnu-debug.tar.gz
  d924e161f1c32b3980c72b4949c99269e3d5fad8656749edae9fbbaafb1b7ff9  output/bitcoin-fecb3723b63d-powerpc64-linux-gnu.tar.gz
  d2f339fc78608ac6cdc505b21abc5f397e52283914113f45dc0adad0c023df54  output/bitcoin-fecb3723b63d-powerpc64le-linux-gnu-debug.tar.gz
  d537c014adbdd712b7b20f3171bc4342622ba56f4fa655bba85afbf35aee2840  output/bitcoin-fecb3723b63d-powerpc64le-linux-gnu.tar.gz
  0f42646fa5be154e8717df0e39ba843a61928225b00e0d48b1b2179966fea315  output/bitcoin-fecb3723b63d-riscv64-linux-gnu-debug.tar.gz
  f7b9cc85f74c006ac484e20915c84a12069447102d685124c5246b6eff8545c8  output/bitcoin-fecb3723b63d-riscv64-linux-gnu.tar.gz
  b60b51544a26dfa2e6a05a6daa99c63aeb62d7a1893191824867e1da9bbb73c4  output/bitcoin-fecb3723b63d-win-unsigned.tar.gz
  abc4cdb44146edf16fc47aa11d72648fa53c00d8f70937cab74cdaaaa9947c58  output/bitcoin-fecb3723b63d-win64-debug.zip
  3c6d437b09acc479060d922c64c1f6688df6385a6a3950d31c7a6e0977d757eb  output/bitcoin-fecb3723b63d-win64-setup-unsigned.exe
  d4f015fcfca15f23a797786fe67ca12ac73d3f594dd9e1b885e33d765f21beff  output/bitcoin-fecb3723b63d-win64.zip
  5fcb478027cb790ab7a3480fab91f764b10da4fd25d82b08f5ecfe42b4b7d316  output/bitcoin-fecb3723b63d-x86_64-linux-gnu-debug.tar.gz
  eef74c6b301bd799c6522b60c26d700a496ecf2bd357f09c83cbd88132086783  output/bitcoin-fecb3723b63d-x86_64-linux-gnu.tar.gz
  af897573bd4f1e9acfef43af19a79e0e1c6a662cb3dc0bc8f5f6d2656c441953  output/src/bitcoin-fecb3723b63d.tar.gz
  ```

  Gitian builds:
  ```bash
  # macOS:
  b3926b7956b31b87ec96885369401141cc5a3f37e91a0ad9a03c6f7c1bd2bee7  bitcoin-fecb3723b63d-osx-unsigned.dmg
  61792260b3afd0b921d84ddb0bb3639c2b4e063c7b7fb715d515b3601c7ad38b  bitcoin-fecb3723b63d-osx-unsigned.tar.gz
  953081b66a1feababe041cae0b31664856260f7364f87c5c50f7f7c1fd6b710a  bitcoin-fecb3723b63d-osx64.tar.gz
  af897573bd4f1e9acfef43af19a79e0e1c6a662cb3dc0bc8f5f6d2656c441953  src/bitcoin-fecb3723b63d.tar.gz
  aecaa381205e9ed6585cdffa22c7b46d3ece989c1774855d4a3b4cae5d75567a  bitcoin-core-osx-22-res.yml

  # Windows:
  21c23951c96bcbf79fa75a6b915c40c24445964cced6242f4e9181464f66ba40  bitcoin-fecb3723b63d-win-unsigned.tar.gz
  327cc290f5f709892e54cdc7bbf1745892eed497cd636c8f80d2310419e585c2  bitcoin-fecb3723b63d-win64-debug.zip
  e86a36c26897be064339cda866cb9563d08c867eceae59a677329390d729cbfe  bitcoin-fecb3723b63d-win64-setup-unsigned.exe
  844754a178b3b7ba62fc39bcc3f5e76b3903c9cd86adc26ec224ecf84d697239  bitcoin-fecb3723b63d-win64.zip
  af897573bd4f1e9acfef43af19a79e0e1c6a662cb3dc0bc8f5f6d2656c441953  src/bitcoin-fecb3723b63d.tar.gz

  # Linux:
  b6224d86755e6c609fd1cfff79f6514bdd0cf1af8689eca692352c515e6cb7dd  bitcoin-fecb3723b63d-aarch64-linux-gnu-debug.tar.gz
  371a2533f3510c7a7e7bd2a9b504accffdcdd65bcc9d6c393570e0378f470f93  bitcoin-fecb3723b63d-aarch64-linux-gnu.tar.gz
  6c171cf1168f7bc6a1f78d5662c6cd1de7dd6157559fe4f7f95d34df7e398354  bitcoin-fecb3723b63d-arm-linux-gnueabihf-debug.tar.gz
  ac455dcb33c92191eb0124c78fa356cea78c88e3976bfe8b4b9f9052458b7b24  bitcoin-fecb3723b63d-arm-linux-gnueabihf.tar.gz
  166ec0874d09b1e3d1b682ed120873b2715dee5ed13dd721443ee29784074107  bitcoin-fecb3723b63d-powerpc64-linux-gnu-debug.tar.gz
  2b32d1a761625c28ed59fdbe8463dcb89b4f583a3119c57fd6815c9882241c78  bitcoin-fecb3723b63d-powerpc64-linux-gnu.tar.gz
  b9b37f0097f39fb16c2612166ffe21a09b436feea42394935831e2cb102c532a  bitcoin-fecb3723b63d-powerpc64le-linux-gnu-debug.tar.gz
  e98fb672a5205a8d18f6ca4a39dec0c26353031c455c4e1b3917b917ce687d8d  bitcoin-fecb3723b63d-powerpc64le-linux-gnu.tar.gz
  f92b07bd155fc469a18aa34571534f2c0bf12706f381ca973bb7a51692e25754  bitcoin-fecb3723b63d-riscv64-linux-gnu-debug.tar.gz
  94321b7db0446457c372bea24d71d84d0f0181f7607bf9f96a8b773e69ee1370  bitcoin-fecb3723b63d-riscv64-linux-gnu.tar.gz
  350bc9be945e3410bf73d9631fe4bb750f9a2ee3d538d2ce3efd42b15eba926a  bitcoin-fecb3723b63d-x86_64-linux-gnu-debug.tar.gz
  74aa3745942a9d76d3db23fa0251a27bbe1ea95683a901df37333caf9c6d13ab  bitcoin-fecb3723b63d-x86_64-linux-gnu.tar.gz
  af897573bd4f1e9acfef43af19a79e0e1c6a662cb3dc0bc8f5f6d2656c441953  src/bitcoin-fecb3723b63d.tar.gz
  959c25666565646279659fccb93278875bb926b67faf685185f461bf55b4058e  bitcoin-core-linux-22-res.yml
  ```

ACKs for top commit:
  hebasto:
    ACK fecb3723b6

Tree-SHA512: 00edf084852bfab404fb32d0a726088a50283a58a240d4e03cbd746cbffbe085d309434b2c22a4ed18c28be4df6958eb51d92d4ccd7548dd0ee49f99d458ff03
2021-04-06 08:05:41 +08:00
Carl Dong
44f6d4f56b guix: Record precious directories and add guix-clean
Many users have reported problems that stem from having an unclean
working tree. To that end, I've written a guix-clean script which should
help reset the working tree while respecting user-specified precious
directories.

Precious directories, such as:

- SOURCES_PATH
- BASE_CACHE
- SDK_PATH
- OUTDIR

Should be preserved when cleaning the working tree, and are thus
recorded in ./contrib/guix/var/precious_dirs.

The ./contrib/guix/guix-clean script is able to parse that file and make
sure to avoid them when cleaning out the working tree.
2021-04-05 19:13:54 -04:00
Carl Dong
84912d4b24 build: Remove spaces from variable-printing rules
This simplifies parsing when using these rules from scripts.
2021-04-05 19:13:54 -04:00
W. J. van der Laan
0102f80b51
Merge #21375: guix: Misc feedback-based fixes + hier restructuring
7476b46f18 guix: Build dmg as a static binary (Carl Dong)
06d6cf6784 depends: libdmg-hfsplus: Skip CMake RPATH patching (Carl Dong)
65176ab573 guix: Remove codesign_allocate+pagestuff from unsigned tarball (Carl Dong)
ca85679eb4 guix: Use clang-toolchain instead of clang (Carl Dong)
1aec0eda8f guix: Fallback to local build for substitute-enabled Guix users (Carl Dong)
1742f8e12d guix: Add early health check for guix-daemon (Carl Dong)
c1ae726a13 guix: More thoroughly control native toolchain (Carl Dong)
39741128d3 guix: Supply --link-profile (Carl Dong)
d55a1056ee guix: Add troubleshooting documentation entries (Carl Dong)
7f401c953f guix: Adapt guix-build to prelude, restructure hier (Carl Dong)
4eccf063b2 guix: Remove guix-build.sh filename extension (Carl Dong)
7753357a7b guix: Add source-able bash prelude and utils (Carl Dong)
e5b49a01f5 guix: Create windeploy inside distsrc-* (Carl Dong)
3e9982ab38 contrib: Silence git-describe when looking for tag (Carl Dong)
d5a71e9785 guix: Use --cores instead of --max-jobs (Carl Dong)

Pull request description:

  This PR addresses a few hiccups encountered by the brave souls who've been experimenting with the Guix scripts:
  - Resolves confusion between `--cores=` and `--max-jobs=`
    - `guix`'s `--cores=` actually corresponds to make's `--jobs=`, so let's just control `--cores=` with our overridable env var
  - `git-describe` will scream `fatal: no tag exactly matches '<hash>'` when looking for a tag, but we don't care, so silence that
  - `windeploy/unsigned` should be inside `distsrc-*` and created idempotently (sorry I know this one annoyed people)
  - Add troubleshooting documentation to `README.md`
  - Add early health check for `guix-daemon` in case user forgot to start a `guix-daemon`
  - Depending on configuration, a `--fallback` flag may be needed to tell Guix to not fail if substitutes fail but fallback to building locally
  - `codesign_allocate` and `pagestuff` are now unnecessary for codesigning as we're now using `signapple`

  A few robustness changes are also included:
  - We supply the `--link-profile` flag, as some Guix packages may expect the profile to be available under `$HOME/.guix-profile`
  - We now clear and manually set all toolchain-related env vars (e.g. `C*_INCLUDE_PATH`) ourselves, after patching a Qt::moc bug
  - We use the native `clang-toolchain` package for darwin builds instead of `clang`, lining up with all our other toolchain packages.

  Finally, we restructure the guix building hierarchy such that it looks something like:
  ```
  guix-build-<short-hash-or-version-tag>
  ├── distsrc-<short-hash-or-version-tag>-${HOST}
  │   ├── contrib
  │   ├── depends
  │   ├── src
  │   └── ...
  ├── distsrc-<short-hash-or-version-tag>-...
  └── output
      ├── dist-archive
      │   └── bitcoin-<short-hash-or-version-tag>.tar.gz
      ├── *-linux-*
      │   ├── bitcoin-<short-hash-or-version-tag>-*-linux-*-debug.tar.gz
      │   └── bitcoin-<short-hash-or-version-tag>-*-linux-*.tar.gz
      ├── x86_64-apple-darwin18
      │   ├── bitcoin-<short-hash-or-version-tag>-osx64.tar.gz
      │   ├── bitcoin-<short-hash-or-version-tag>-osx-unsigned.dmg
      │   └── bitcoin-<short-hash-or-version-tag>-osx-unsigned.tar.gz
      └── x86_64-w64-mingw32
          ├── bitcoin-<short-hash-or-version-tag>-win64-debug.zip
          ├── bitcoin-<short-hash-or-version-tag>-win64-setup-unsigned.exe
          ├── bitcoin-<short-hash-or-version-tag>-win64.zip
          └── bitcoin-<short-hash-or-version-tag>-win-unsigned.tar.gz
  ```
  Separating guix builds by their version identifier (basically namespacing them) allows us to change the layout in the future without worry about potential naming conflicts.

ACKs for top commit:
  sipa:
    ACK 7476b46f18
  laanwj:
    ACK 7476b46f18

Tree-SHA512: 0e899aa941aafdf552b2a7e8a08131ee9283180bbef7334439e2461a02aa7235ab7b9ca9c149b80fc5d0a9f4bbd35bc80fcee26197c0836ba8eaf2d86ffa0386
2021-04-06 01:00:27 +02:00
MarcoFalke
fa121b628d
blockstorage: [refactor] Use chainman reference where possible
Also, add missing { } for style.

Can be reviewed with `--word-diff-regex=.`
2021-04-05 20:26:32 +02:00
MarcoFalke
fa0c7d9ad2
move-only: Move *Disk functions to blockstorage
Can be reviewed with the git options
--color-moved=dimmed-zebra --color-moved-ws=ignore-all-space
2021-04-05 20:26:14 +02:00
Carl Dong
d7824acdb9 rest: Use existing NodeContext 2021-04-05 11:14:33 -04:00
Carl Dong
3f08934799 rest: Pass in NodeContext to rest_block 2021-04-05 11:14:33 -04:00
Carl Dong
7be0671b95 rpc/rawtx: Use existing NodeContext
Also pass in appropriate object to:
- TxToJSON
2021-04-05 11:14:33 -04:00
Carl Dong
60dc05afc6 rpc/mining: Use existing NodeContext
Also pass in appropriate object to:
- GetNetworkHashPS
- [gG]enerateBlock{,s}

Also:
- Misc style/constness changes
2021-04-05 11:14:28 -04:00
Carl Dong
d485e815e2 rpc/blockchain: Use existing NodeContext
Also pass in appropriate object to:
- BIP9SoftForkDescPushBack
- BuriedForkDescPushBack
2021-04-05 11:13:54 -04:00
Carl Dong
d0abf0bf42 rpc/*,rest: Add review-only assertion to EnsureChainman 2021-04-05 11:13:54 -04:00
Carl Dong
cced0f46c9 miner: Pass in previous CBlockIndex to RegenerateCommitments 2021-04-05 11:13:51 -04:00
Carl Dong
7476b46f18 guix: Build dmg as a static binary
This relatively easy change eliminates all runtime dependencies (except
for the kernel) for dmg, which is the only native build tool that gets
put in our output tarballs.

This allows much more flexibility when constructing the codesigning
environment, and is much more robust.
2021-04-05 11:00:39 -04:00
Carl Dong
06d6cf6784 depends: libdmg-hfsplus: Skip CMake RPATH patching
CMake's RPATH patching apparently causes non-reproducibility in the
executables which are produced, manifesting in a difference in padding
in the .dynstr section (we found this while investigating
non-reproducibility in the "dmg" tool). This RPATH patching can be
safely skipped for executables which don't depend on internal shared
libraries.

Documentation sources:
1. https://gitlab.kitware.com/cmake/community/-/wikis/doc/cmake/RPATH-handling
2. https://reproducible-builds.org/docs/deterministic-build-systems/#cmake-notes

Prior debugging art:
1. https://stackoverflow.com/questions/63438206/cmake-g-reproducible-build-issue-with-changing-build-path
2. https://github.com/NXPmicro/mfgtools/pull/229/files
2021-04-05 11:00:39 -04:00
Carl Dong
65176ab573 guix: Remove codesign_allocate+pagestuff from unsigned tarball 2021-04-05 11:00:39 -04:00
Carl Dong
ca85679eb4 guix: Use clang-toolchain instead of clang 2021-04-05 11:00:39 -04:00
Carl Dong
1aec0eda8f guix: Fallback to local build for substitute-enabled Guix users 2021-04-05 11:00:39 -04:00
Carl Dong
1742f8e12d guix: Add early health check for guix-daemon 2021-04-05 11:00:39 -04:00
Carl Dong
c1ae726a13 guix: More thoroughly control native toolchain 2021-04-05 11:00:39 -04:00
Carl Dong
39741128d3 guix: Supply --link-profile 2021-04-05 11:00:39 -04:00
Carl Dong
d55a1056ee guix: Add troubleshooting documentation entries 2021-04-05 11:00:39 -04:00
Carl Dong
7f401c953f guix: Adapt guix-build to prelude, restructure hier 2021-04-05 11:00:39 -04:00
Carl Dong
4eccf063b2 guix: Remove guix-build.sh filename extension 2021-04-05 11:00:39 -04:00
Carl Dong
7753357a7b guix: Add source-able bash prelude and utils 2021-04-05 11:00:21 -04:00
MarcoFalke
1ea5c7ec78
Merge #21604: test: Document why no symbol names can be used for suppressions
fa04eb7d78 test: Document why no symbol names can be used for suppressions (MarcoFalke)

Pull request description:

Top commit has no ACKs.

Tree-SHA512: 02e5d9cb3ca299b5e7f1f0f780af514692147f5f0846e21e5375a99e90d3aed3a3489c674ac0eb90ae34d60f576410ba1d926d5ca70cdce4f9c7a111cd516adf
2021-04-05 16:25:58 +02:00
MarcoFalke
fa04eb7d78
test: Document why no symbol names can be used for suppressions 2021-04-05 16:23:13 +02:00
Hennadii Stepanov
b8e5d0d3fe
qt: Handle exceptions in SendCoinsDialog::sendButtonClicked slot
Also, uic automatic connection replaced with an explicit one.
2021-04-05 16:47:31 +03:00
Hennadii Stepanov
1ac2bc7ac0
qt: Handle exceptions in TransactionView::bumpFee slot
Also the parameter list of the TransactionView::bumpFee slot is made
compatible with one of the QAction::triggered signal.
2021-04-05 16:47:31 +03:00
Hennadii Stepanov
bc00e13bc8
qt: Handle exceptions in WalletModel::pollBalanceChanged slot
Actually, the private QTimer::timeout signal has one
QTimer::QPrivateSignal parameter.
2021-04-05 16:47:08 +03:00
W. J. van der Laan
5c9b06db81
Merge #21302: wallet: createwallet examples for descriptor wallets
5039e0e55a test: HelpExampleCliNamed and HelpExampleRpcNamed (Ivan Metlushko)
591735ef0b rpc: Add HelpExampleCliNamed and use it for `createwallet` doc (Wladimir J. van der Laan)
5d5a90e819 rpc: Add HelpExampleRpcNamed (Ivan Metlushko)

Pull request description:

  Rationale: make descriptor wallets more visible and just a bit easier to setup

  `bitcoin-cli help createwallet`

  **Before**:
  ```
  Examples:
  > bitcoin-cli createwallet "testwallet"
  > curl --user myusername --data-binary '{"jsonrpc": "1.0", "id": "curltest", "method": "createwallet", "params": ["testwallet"]}' -H 'content-type: text/plain;' http://127.0.0.1:8332/
  ```

  **After**
  ```
  Examples:
  > bitcoin-cli createwallet "testwallet"
  > curl --user myusername --data-binary '{"jsonrpc": "1.0", "id": "curltest", "method": "createwallet", "params": ["testwallet"]}' -H 'content-type: text/plain;' http://127.0.0.1:8332/
  > bitcoin-cli createwallet "descriptors" false false "" true true true
  > curl --user myusername --data-binary '{"jsonrpc": "1.0", "id": "curltest", "method": "createwallet", "params": ["descriptors", false, false, "", true, true, true]}' -H 'content-type: text/plain;' http://127.0.0.1:8332/
  ```

ACKs for top commit:
  laanwj:
    Tested ACK 5039e0e55a

Tree-SHA512: d37210e6ce639addee881377092d8f6fb2a537a60a259c561899e24cf68a0254d7ff45a213573c938f626677e46770cd21113aae5974f26c66b9a2e137699c14
2021-04-05 15:31:41 +02:00
W. J. van der Laan
b2ee8b207d net: Deserialize hardcoded seeds from BIP155 blob
Switch from IPv6 slot-based format to more compact and flexible BIP155
format.
2021-04-05 14:00:48 +02:00
W. J. van der Laan
9b29d5df7f contrib: Add explicit port numbers for testnet seeds
This is necessary now due to parsing change.
2021-04-05 14:00:48 +02:00
W. J. van der Laan
2a257de113 contrib: Add a few TorV3 seed nodes 2021-04-05 14:00:48 +02:00
W. J. van der Laan
06030f7a42 contrib: generate-seeds.py generates output in BIP155 format 2021-04-05 13:59:40 +02:00
MarcoFalke
fab19871ba
test: Document race:validation_chainstatemanager_tests suppression 2021-04-05 13:31:04 +02:00
MarcoFalke
fa5eabe721
refactor: Remove negative lock annotations from globals 2021-04-05 08:42:15 +02:00
MarcoFalke
824eea5643
Merge #21599: test: Replace file level integer overflow suppression with function level suppression
585854ac66 test: Replace blanket UBSan signed integer overflow suppression for txmempool.cpp with specific suppression (practicalswift)

Pull request description:

  Replace file level (`txmempool.cpp`) signed integer overflow suppression with function level suppression (`CTxMemPool::PrioritiseTransaction`). The suppression was added yesterday in #21586.

  Rationale: To avoid risk hiding other signed integer overflows in `txmempool.cpp`.

  Obviously it would be better if this signed integer overflow fixed instead of suppressed - see details #20626. Any taker? :)

  To hit the issue via fuzzing:

  ```
  $ UBSAN_OPTIONS="print_stacktrace=1:halt_on_error=1:report_error_type=1" FUZZ=validation_load_mempool src/test/fuzz/fuzz
  INFO: Seed: 1184244493
  INFO: Loaded 1 modules   (634418 inline 8-bit counters): 634418 [0x55a09fdfbf98, 0x55a09fe96dca),
  INFO: Loaded 1 PC tables (634418 PCs): 634418 [0x55a09fe96dd0,0x55a0a08450f0),
  INFO:     1264 files found in mempool/
  INFO: -max_len is not provided; libFuzzer will not generate inputs larger than 1040698 bytes
  INFO: seed corpus: files: 1264 min: 1b max: 1040698b total: 15997133b rss: 197Mb
  txmempool.cpp:847:15: runtime error: signed integer overflow: -7211388903327006720 + -7211353718954917888 cannot be represented in type 'long'
      #0 0x55a09c3ce2d8 in CTxMemPool::PrioritiseTransaction(uint256 const&, long const&) /home/thomas/bitcoin/src/txmempool.cpp:847:15
  ```

ACKs for top commit:
  JeremyRubin:
    utACK 585854a
  hebasto:
    ACK 585854ac66, I have reviewed the code and it looks OK, I agree it can be merged.

Tree-SHA512: 5a343f028c1e1a1aba3b51a0eced605849184891ffafecb3cd2b424c6cfea01afd7c2672274936b0bac646075ec066408a570bf6b34bc9b87399a53ce20d8a23
2021-04-05 07:28:45 +02:00
practicalswift
585854ac66 test: Replace blanket UBSan signed integer overflow suppression for txmempool.cpp with specific suppression 2021-04-04 21:10:15 +00:00
MarcoFalke
fa91b2b2b3
move-only: Move AbortNode to shutdown
Can be reviewed with the git option
--color-moved=dimmed-zebra
2021-04-04 18:08:36 +02:00
MarcoFalke
fa413f07a1
move-only: Move ThreadImport to blockstorage
Can be reviewed with the git options
--color-moved=dimmed-zebra --color-moved-ws=ignore-all-space
2021-04-04 18:07:24 +02:00
MarcoFalke
590e49ccf2
Merge #21586: test: Add missing suppression for signed-integer-overflow:txmempool.cpp
fad8a97b21 test: Add missing suppression for signed-integer-overflow:txmempool.cpp (MarcoFalke)

Pull request description:

  Otherwise the fuzzer will crash:

  ```
  txmempool.cpp:847:15: runtime error: signed integer overflow: 8138645194045128704 + 4611686018427387904 cannot be represented in type 'long'
      #0 0x558ff1838d4c in CTxMemPool::PrioritiseTransaction(uint256 const&, long const&) /root/fuzz_dir/scratch/fuzz_gen/code/src/txmempool.cpp:847:15
      #1 0x558ff196e723 in LoadMempool(CTxMemPool&, CChainState&, std::function<_IO_FILE* (boost::filesystem::path const&, char const*)>) /root/fuzz_dir/scratch/fuzz_gen/code/src/validation.cpp:5053:22
      #2 0x558ff13f37ab in validation_load_mempool_fuzz_target(Span<unsigned char const>) /root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/validation_load_mempool.cpp:32:11
      #3 0x558ff1083378 in std::_Function_handler<void (Span<unsigned char const>), void (*)(Span<unsigned char const>)>::_M_invoke(std::_Any_data const&, Span<unsigned char const>&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:300:2
      #4 0x558ff22a749d in std::function<void (Span<unsigned char const>)>::operator()(Span<unsigned char const>) const /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/std_function.h:688:14
      #5 0x558ff22a70e8 in LLVMFuzzerTestOneInput /root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz.cpp:63:5
      #6 0x558ff0f83543 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) fuzzer.o
      #7 0x558ff0f6d442 in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) fuzzer.o
      #8 0x558ff0f7323a in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) fuzzer.o
      #9 0x558ff0f9ef82 in main (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x196df82)
      #10 0x7f1237f310b2 in __libc_start_main /build/glibc-eX1tMB/glibc-2.31/csu/../csu/libc-start.c:308:16
      #11 0x558ff0f4816d in _start (/root/fuzz_dir/scratch/fuzz_gen/code/src/test/fuzz/fuzz+0x191716d)

Top commit has no ACKs.

Tree-SHA512: 94c13771054b4acfb83e3dcfa09beb3f9d0ca0e025d3993cdf2e46df6456f227565b31fd4377b8dd86c567aeee800f293ac57a470c6f5f81e9177d460e7bd705
2021-04-04 07:44:00 +02:00
MarcoFalke
fa9b74f5ea
Fix assumeutxo crash due to missing base_blockhash 2021-04-04 07:38:02 +02:00
MarcoFalke
fa8fffebe8
refactor: Prefer clean assert over UB in coinstats 2021-04-04 07:37:43 +02:00
MarcoFalke
fa73ce6e65
Fix assumeutxo crash due to truncated file 2021-04-03 17:52:58 +02:00
MarcoFalke
fad8a97b21
test: Add missing suppression for signed-integer-overflow:txmempool.cpp 2021-04-03 17:39:41 +02:00
fanquake
fecb3723b6
build: additional PKG_CHECK_MODULES calls in bitcoin_qt.m4
Add checks for the edid, input and service support modules.
2021-04-03 15:27:04 +08:00
MarcoFalke
ad4bf8a945
Merge #20459: rpc: Fail to return undocumented return values
fa8192f42e rpc: Fail to return undocumented return values (MarcoFalke)

Pull request description:

  Currently a few return values are undocumented. This is causing confusion at the least. See for example #18476

  Fix this by treating it as an internal bug to return undocumented return values.

ACKs for top commit:
  ryanofsky:
    Code review ACK fa8192f42e. Only changes: rebase, no const_cast suggestion, and tostring cleanups needed after suggestion

Tree-SHA512: c006905639bafe3045de152b00c34d9864731becb3c4f468bdd61a392f10d7e7cd89a54862c8daa8c11ac4eea0eb5f13b0f647d21e21a0a797b54191cff7238c
2021-04-03 09:26:31 +02:00