Commit graph

24185 commits

Author SHA1 Message Date
MarcoFalke
1ae366ecb0
Merge #18569: ci: Add big endian native s390x build
6136a96cdf ci: Rename RUN_CI_ON_HOST to DANGER_RUN_CI_ON_HOST (Hennadii Stepanov)
97ba77aa8e ci: Add native s390x (Hennadii Stepanov)

Pull request description:

  Unlike the Docker wrapped solution (#17591) this PR suggests running on host system directly.

  This approach makes builds quick and stable (see: #18106).

  The excerpt from the Travis log:
  ```
  ...
  Running on host system without docker wrapper
  ...
  Byte Order: Big Endian
  ...
  ```

ACKs for top commit:
  MarcoFalke:
    ACK 6136a96cdf

Tree-SHA512: 1b591de13e38d10a35217e1de11cbd648a359d18d16eed166fac18ea5788b58cc9fc6d407086ed342b99e57e479efd951a0ea693710177e500eb116316b9a788
2020-04-09 22:19:22 +08:00
Jon Atack
75019774c9
cli -getinfo: use getbalances instead of deprecated getwalletinfo balance 2020-04-09 15:42:43 +02:00
MarcoFalke
87374d80a7
Merge #18566: test: Set -use_value_profile=1 when merging fuzz inputs
fa5e973b44 test: Set -use_value_profile=1 when merging fuzz inputs (MarcoFalke)

Pull request description:

ACKs for top commit:
  practicalswift:
    ACK fa5e973b44

Tree-SHA512: 4fdf92c137a5f771240ceb35c5a0c0033b1c334455cff83af333eedffe6a636e88c358ec7b7b9141b230b50f03de7c894fae406494a85bd7f6a9147a6d57dd7f
2020-04-09 20:20:59 +08:00
MarcoFalke
dcef5ad6ec
Merge #18562: ci: Run unit tests sequential once
fa7af33b4c ci: Run unit tests sequential once (MarcoFalke)
fa68a3e764 appveyor: Enable minimal unit test logging to aid debugging (MarcoFalke)

Pull request description:

  Fixes #16976

Top commit has no ACKs.

Tree-SHA512: 1f1ee8776a67afa8c1c5a16ef170c9975b6a486c087c8eba12e97d23382befd1c2801622ec70ca8e4cd1fbedce1dec46be67677ceaf07f35f1d3f3bead0200f0
2020-04-09 20:07:09 +08:00
Sebastian Falbesoner
5eae034996 net: limit BIP37 filter lifespan (active between 'filterload' and 'filterclear')
Previously, a default match-everything bloom filter was set for every peer,
i.e. even before receiving a 'filterload' message and after receiving a
'filterclear' message code branches checking for the existence of the filter
by testing the pointer "pfilter" were _always_ executed.
2020-04-09 11:26:24 +02:00
Hennadii Stepanov
6136a96cdf
ci: Rename RUN_CI_ON_HOST to DANGER_RUN_CI_ON_HOST 2020-04-09 02:59:37 +03:00
Hennadii Stepanov
97ba77aa8e
ci: Add native s390x 2020-04-09 02:52:52 +03:00
pierrenn
2748e87932
script: prevent UB when computing abs value for num opcode serialize 2020-04-09 08:32:00 +09:00
Pieter Wuille
748977690e Add asmap_direct fuzzer that tests Interpreter directly 2020-04-08 16:26:06 -07:00
Pieter Wuille
7cf97fda15 Make asmap Interpreter errors fatal and fuzz test it 2020-04-08 16:26:06 -07:00
Pieter Wuille
c81aefc537 Add additional effiency checks to sanity checker 2020-04-08 16:26:06 -07:00
Pieter Wuille
fffd8dca2d Add asmap sanity checker 2020-04-08 16:26:06 -07:00
Pieter Wuille
5feefbe6e7 Improve asmap Interpret checks and document failures 2020-04-08 16:26:06 -07:00
Pieter Wuille
2b3dbfa5a6 Deal with decoding failures explicitly in asmap Interpret 2020-04-08 16:26:06 -07:00
Pieter Wuille
1479007a33 Introduce Instruction enum in asmap 2020-04-08 16:26:06 -07:00
MarcoFalke
661bd5dea3
Merge #18363: tests: Add fuzzing harness for HTTPRequest, libevent's evhttp and related functions
cdfb8e7afa tests: Add fuzzing harness for HTTPRequest, libevent's evhttp and related functions (practicalswift)

Pull request description:

  Add fuzzing harness for `HTTPRequest`, `libevent`'s `evhttp` and related functions.

ACKs for top commit:
  laanwj:
    ACK cdfb8e7afa

Tree-SHA512: da481afed5eb3232d3f3d0583094e56050e6234223dfcb356d8567fe0616336eb1b78c5e6821325fc9767e385e5dfaf3c96f0d35ffdb67f18d74f9a9a9464e24
2020-04-09 02:45:37 +08:00
MarcoFalke
fa5e973b44
test: Set -use_value_profile=1 when merging fuzz inputs 2020-04-09 00:51:51 +08:00
MarcoFalke
3410fe6887
Merge #18521: fuzz: Add process_messages harness
fa6a008434 fuzz: Add process_messages harness (MarcoFalke)

Pull request description:

ACKs for top commit:
  practicalswift:
    Tested ACK fa6a008434

Tree-SHA512: 2d8788308c7f45c97ca003378f58a9d51f51265958557a65e5e505b1666b4cb928f0d010622870175090a0ad25e2d10b41f26f4eef14b6ff334a024baa250f8c
2020-04-09 00:14:31 +08:00
MarcoFalke
4c59236376
Merge #18533: scripted-diff: Replace strCommand with msg_type
7777e3624f scripted-diff: Replace strCommand with msg_type (MarcoFalke)

Pull request description:

  Receiving a message is not a command, but simply a message of some type

ACKs for top commit:
  promag:
    ACK 7777e3624f.
  naumenkogs:
    ACK 7777e36
  practicalswift:
    ACK 7777e3624f -- I've always thought the `strCommand` name is confusing :)
  theStack:
    ACK 7777e36

Tree-SHA512: 662bac579064c621191916274314b85111cfb4df488f00893ceb16def1c47af4b2a0f34cd7349722099b5a9d23160edb8eb999841f1d64af3e0da02e4870b4bf
2020-04-09 00:12:39 +08:00
MarcoFalke
bfef72d0fb
Merge #18565: tests: Add fuzzing harnesses for classes/functions in policy/fees.h, checkqueue.h and cuckoocache.h. Add fuzzing coverage.
283bd72156 tests: Add coverage of {,Incremental}DynamicUsage(const std::set<X, Y>& s) to existing fuzzer (practicalswift)
bf76000493 tests: Add fuzzing harness for classes/functions in cuckoocache.h (practicalswift)
57890b2555 tests: Add fuzzing harness for classes/functions in checkqueue.h (practicalswift)
2df5701e90 tests: Add coverage of GetVirtualTransactionSize(...) to existing fuzzer (practicalswift)
7b9a2dc864 tests: Add fuzzing harness for AdditionOverflow(...) (practicalswift)
44fb2a596b tests: Add fuzzing harness for FeeFilterRounder (practicalswift)

Pull request description:

  Includes:

  ```
  tests: Add fuzzing harness for FeeFilterRounder
  tests: Add fuzzing harness for classes/functions in checkqueue.h
  tests: Add fuzzing harness for classes/functions in cuckoocache.h
  tests: Add coverage of {,Incremental}DynamicUsage(const std::set<X, Y>& s) to existing fuzzer
  tests: Add coverage of GetVirtualTransactionSize(...) to existing fuzzer
  tests: Add fuzzing harness for AdditionOverflow(...)
  ```

  See [`doc/fuzzing.md`](https://github.com/bitcoin/bitcoin/blob/master/doc/fuzzing.md) for information on how to fuzz Bitcoin Core.

ACKs for top commit:
  MarcoFalke:
    ACK 283bd72156

Tree-SHA512: 2361edfb5c47741b22d9fb996836c5250c5a26bc5e956039ea6a0c55ba2d36c78f241d66f85bc02f5b85b9b83d5fde56a5c4702b9d1b7ac4a9a3ae391ca79eaa
2020-04-08 23:34:19 +08:00
MarcoFalke
2392566284
Merge #18563: test: Fix unregister_all_during_call cleanup
13d2a33537 Fix unregister_all_during_call cleanup (Russell Yanofsky)

Pull request description:

  Use `TestingSetup` fixture to fix `unregister_all_during_call` test not calling `UnregisterBackgroundSignalScheduler`, which could trigger an assert in `RegisterBackgroundSignalScheduler` when called in later tests

  Failure reported by fanquake https://github.com/bitcoin/bitcoin/pull/18551#issuecomment-610974251

ACKs for top commit:
  MarcoFalke:
    ACK 13d2a33537 if appveyor unit tests pass

Tree-SHA512: d2ec8ff14c54d97903af50031abfac1f38ec1c3aabc90371cfd5b79481fa69d3d77f339bfdf7d2178fd85e83402f72eda7cf4d339e5bbfa7e6e1a68836643b93
2020-04-08 23:24:54 +08:00
practicalswift
283bd72156 tests: Add coverage of {,Incremental}DynamicUsage(const std::set<X, Y>& s) to existing fuzzer 2020-04-08 14:45:27 +00:00
practicalswift
bf76000493 tests: Add fuzzing harness for classes/functions in cuckoocache.h 2020-04-08 14:45:27 +00:00
practicalswift
57890b2555 tests: Add fuzzing harness for classes/functions in checkqueue.h 2020-04-08 14:45:27 +00:00
practicalswift
2df5701e90 tests: Add coverage of GetVirtualTransactionSize(...) to existing fuzzer 2020-04-08 14:45:27 +00:00
practicalswift
7b9a2dc864 tests: Add fuzzing harness for AdditionOverflow(...) 2020-04-08 14:45:27 +00:00
practicalswift
44fb2a596b tests: Add fuzzing harness for FeeFilterRounder 2020-04-08 14:45:27 +00:00
Wladimir J. van der Laan
b3c3d9a518
Merge #18558: build: Fix boost detection for arch armv7l
da0842dcd4 build: Update ax_boost_mase.m4 to the latest serial (Hennadii Stepanov)

Pull request description:

  Picked from the upstream 90814f1895

  Fix #17010.

  This PR is [alternative](https://github.com/bitcoin/bitcoin/issues/17010#issuecomment-610651736) to #18501.

ACKs for top commit:
  laanwj:
    ACK da0842dcd4

Tree-SHA512: 5e43e12c524e4ea6b967c9be02c81a75948eac6cf55b819e3339222a2e3414731581d40af3524ad865abae7c5247c190448ebf2aa5e0d9a338edb501cc23ba38
2020-04-08 16:28:50 +02:00
MarcoFalke
fa7af33b4c
ci: Run unit tests sequential once 2020-04-08 22:16:55 +08:00
MarcoFalke
fa68a3e764
appveyor: Enable minimal unit test logging to aid debugging 2020-04-08 22:14:44 +08:00
Russell Yanofsky
13d2a33537 Fix unregister_all_during_call cleanup
Use TestingSetup fixture to fix unregister_all_during_call test not calling
UnregisterBackgroundSignalScheduler, which could trigger an assert in
RegisterBackgroundSignalScheduler when called in later tests

Failure reported by fanquake <fanquake@gmail.com>
https://github.com/bitcoin/bitcoin/pull/18551#issuecomment-610974251
2020-04-08 10:11:46 -04:00
MarcoFalke
faede1b293
test: Properly raise FailedToStartError when rpc shutdown before warmup finished 2020-04-08 21:44:39 +08:00
Hennadii Stepanov
da0842dcd4 build: Update ax_boost_mase.m4 to the latest serial
This change fixes boost detection for arch armv7l.
2020-04-08 16:14:31 +03:00
MarcoFalke
1f70185a80
Merge #18551: Do not clear validationinterface entries being executed
2276339a17 Add test for UnregisterAllValidationInterfaces bug (Russell Yanofsky)
3c61abbbc8 Do not clear validationinterface entries being executed (Pieter Wuille)

Pull request description:

  The previous code for MainSignalsInstance::Clear would decrement the reference
  count of every interface, including ones that were already Unregister()ed but
  still being executed.

  This fixes the issue pointed out here: https://github.com/bitcoin/bitcoin/pull/18524/files#r404395685 . It's not currently observable.

ACKs for top commit:
  jonasschnelli:
    utACK 2276339a17 - reviewed code and test (thanks @ryanofsky for adding the test).
  MarcoFalke:
    ACK 2276339a17 🎎
  ryanofsky:
    Code review ACK 2276339a17. No change to bugfix, just rebased and new test commit added since last review

Tree-SHA512: c1d68e7c681a45c6cadc84e407c2266bcb4b12d34264e1232a61c4eadb74b551231c5a3b1d041de39f507aef4dfa7d4589b8bfe1833f069c739c6270d2a05dbe
2020-04-08 20:43:37 +08:00
Carl Dong
a35e323589
guix: Appease travis. 2020-04-07 19:27:31 -04:00
Carl Dong
0b66d22da5
guix: Use gcc-9 for mingw-w64 instead of 8
The libtool unsorted 'find' determinism issue seemed to have been solved
in gcc-9's git: d41cd173e23ebea7c758644d6ad6e0fde1c2e3a6 or SVN: r262451

Furthermore, it seems that Ubuntu Focal 20.04 LTS is going to ship with
gcc 9 and mingw-w64 7, which will match what we have now.

-----

A note on this:

Careful observers will see that previously I stated that all released
versions of gcc were bootstrapped with a libtool 2.2.7a, meaning that
they all had the unsorted 'find' determinism issue first resolved in
libtool 2.2.7b.

However, I was mistaken, gcc's ltmain.sh CLAIMS it was generated by
libtool 2.2.7a, but it was in fact edited manually. It seems that gcc
maintains their own versions of ltmain.sh and libtool.m4, and only
sometimes backports patches from upstream.

Quite confusing.
2020-04-07 19:01:26 -04:00
Carl Dong
ba0b99bdd6
guix: Don't set MINGW_HAS_SECURE_API CFLAG in depends
This is no longer needed after 3bef7c22 in the mingw-w64 git repository,
which is first included in mingw-w64 v7.0.0.

As of the previous bump to our Guix time machine, we now use mingw-w64
v7.0.0.
2020-04-07 19:00:50 -04:00
Carl Dong
93439a71ed
guix: Bump to upstream commit with mingw-w64 changes
Most of the mingw-w64 toolchain changes have now been upstreamed, we can
point to a commit that exists upstream.

NOTE: I'm not changing the URL yet until we see that Guix upstream will
accept all my patches for macOS.

-----

The Guix tree that's referred to by this commit contains the following
changes relevant to our mingw-w64 build:

b066c25026

  Adds a PACKAGES-WITH-*PATCHES procedure which we can use in the future
  to apply patches to packages if those patches are not considered
  appropriate to upstream Guix

4719b71572

  Adds mingw-w64 (the libc itself) reproducibility patches, taken from
  debian.

79825bee07 + 401d28e433 + c1c50cb5b0

  Add mingw-w64 specific binutils patches, taken from debian.
  Specifically, the "Make DLL import libraries reproducible" patch made
  libbitcoinconsensus.dll.a build reproducibly. The followup commits
  were hotfixes for my mistakes.

0f864175dc

  Bumps mingw-w64 to v7.0.0. This is the first release that enables
  secure APIs by default (which we need), and gains _FORTIFY_SOURCE
  support. This will also be what Ubuntu Focal 20.04 LTS releases with.

cdf00cf75d

  Bumps NSIS to v3.05. This is the first release that includes a fix for
  a reproducibility bug found by some of the electrum developers. See
  details here: https://sourceforge.net/p/nsis/bugs/1230/
2020-04-07 19:00:49 -04:00
Pieter Wuille
8508473094 Avoid non-trivial global constants in SHA-NI code 2020-04-07 13:57:34 -07:00
Russell Yanofsky
2276339a17 Add test for UnregisterAllValidationInterfaces bug
Bug in MainSignalsInstance::Clear could cause validation interface callbacks to
be deleted during execution if UnregisterAllValidationInterfaces was called
more than once.

Bug was introduced in https://github.com/bitcoin/bitcoin/pull/18524 and is
fixed by https://github.com/bitcoin/bitcoin/pull/18551
2020-04-07 12:54:41 -07:00
Pieter Wuille
3c61abbbc8 Do not clear validationinterface entries being executed
The previous code for MainSignalsInstance::Clear would decrement the reference
count of every interface, including ones that were already Unregister()ed but
still being executed.
2020-04-07 12:53:40 -07:00
MarcoFalke
1b151e3ffc
Merge #18532: rpc: Avoid initialization-order-fiasco on static CRPCCommand tables
fa1a92224d rpc: Avoid initialization-order-fiasco on static CRPCCommand tables (MarcoFalke)

Pull request description:

  Currently the fiasco is only theoretical because all content of the table are compile-time constants. However, the fiasco materializes should they ever become run-time constants (e.g. #18531).

ACKs for top commit:
  promag:
    ACK fa1a92224d.
  practicalswift:
    ACK fa1a92224d -- fiasco bad :)

Tree-SHA512: cccadb0ad56194599b74f04264d74c34fa865958580a850efc6474bbdc56f30cadce6b2e9a6ad5472ff46c3f4c793366acd8090fad409a45b25d961f2d89da19
2020-04-07 23:46:17 +08:00
MarcoFalke
63dad67348
Merge #18546: Bugfix: Wallet: Safely deal with change in the address book [part 2]
7a2ecf16df Wallet: Change IsMine check in CWallet::DelAddressBook from assert to failure (Luke Dashjr)
2952c46b92 Wallet: Replace CAddressBookData.name with GetLabel() method (Luke Dashjr)
d7092c392e QA: Test that change doesn't turn into non-change when spent in an avoid-reuse wallet (Luke Dashjr)

Pull request description:

  Follow-up to #18192, not strictly necessary for 0.20

ACKs for top commit:
  MarcoFalke:
    re-ACK 7a2ecf16df, only change is adding an assert_equal in the test 🔰
  jnewbery:
    utACK 7a2ecf16df

Tree-SHA512: e0933ee40f705b751697dc27249e1868ed4874254b174ebdd0a7150125d8c818402e66df2371718c7eeb90e67ee2317215fb260aa9b9d7b9b45ee436de2988ff
2020-04-07 18:47:38 +08:00
MarcoFalke
d12568e2f8
Merge #18549: qt: Fix Window -> Minimize menu item
56fe839e4e qt: Fix Window -> Minimize menu item (Hennadii Stepanov)

Pull request description:

  Now Window -> Minimize menu item is broken on Linux.

  Steps to reproduce:

  1. start `bitcoin-qt`
  2. activate Window -> Minimize menu item with a keyboard (not by a shortcut) or a mouse

  **Expected behavior**

  The main window gets minimized.

  **Actual behavior**

  The main window still unchanged. Even worse: the menu widget becomes a separate window:

  ![Screenshot from 2020-04-07 00-32-02](https://user-images.githubusercontent.com/32963518/78608129-ffb1dd80-7868-11ea-8e73-62ecc140ac1f.png)

  This PR does not touch the macOS specific code as `qApp->focusWindow()` seems work on macOS flawlessly.

ACKs for top commit:
  promag:
    Tested ACK 56fe839e4e on bionic with qt 5.9.5.

Tree-SHA512: 3582e44ba181d859f5994b9cddc6ce1b60aa1db520a31dd3a0684336c79d558d7410ce7a1ab5b0860c6431b54d8acc3aa16e399717b4c70839861e6b6c4290c0
2020-04-07 18:43:07 +08:00
Pieter Wuille
b1d24d1d03 Reorder the test instructions by number 2020-04-06 14:51:38 -07:00
Pieter Wuille
c2ccadc26a Merge and generalize case 3 and case 6 2020-04-06 14:39:42 -07:00
Pieter Wuille
402ad5aaca Only run sanity check once at the end 2020-04-06 14:39:42 -07:00
Pieter Wuille
eda8309bfc Assert immediately rather than caching failure 2020-04-06 14:39:38 -07:00
Pieter Wuille
55608455cb Make a fuzzer-based copy of the prevector randomized test 2020-04-06 14:25:25 -07:00
Hennadii Stepanov
56fe839e4e
qt: Fix Window -> Minimize menu item 2020-04-07 00:19:19 +03:00