Commit graph

17204 commits

Author SHA1 Message Date
Andrew Poelstra
1974749d21 Merge 88d8b4e182 into merged_master (Bitcoin PR #18901) 2020-11-26 01:08:40 +00:00
Andrew Poelstra
3b7c9333fb Merge b55866969e into merged_master (Bitcoin PR #18917) 2020-11-26 01:08:40 +00:00
Andrew Poelstra
1d1a32e637 Merge 5b24f6084e into merged_master (Bitcoin PR #16224) 2020-11-26 01:08:40 +00:00
Andrew Poelstra
d7f7c1089d Merge f763283b65 into merged_master (Bitcoin PR #18512) 2020-11-26 01:08:39 +00:00
Andrew Poelstra
b7d3244d47 Merge 88b2652fad into merged_master (Bitcoin PR #18853) 2020-11-26 01:08:39 +00:00
Andrew Poelstra
bdd412086c Merge 6621be5351 into merged_master (Bitcoin PR #18843) 2020-11-26 01:08:38 +00:00
Andrew Poelstra
14c6827363 Merge dd3310bbb8 into merged_master (Bitcoin PR #18854) 2020-11-26 01:08:38 +00:00
Andrew Poelstra
a88d2747bb Merge 551dc7f664 into merged_master (Bitcoin PR #18806) 2020-11-26 01:08:38 +00:00
Andrew Poelstra
e5faae4af6 Merge 60091d20f9 into merged_master (Bitcoin PR #9381) 2020-11-26 01:08:38 +00:00
Andrew Poelstra
5a58efd0a5 Merge ec79b5f86b into merged_master (Bitcoin PR #18782) 2020-11-26 01:08:37 +00:00
Andrew Poelstra
028afdac4a Merge e727c2bdca into merged_master (Bitcoin PR #18088) 2020-11-26 01:08:37 +00:00
Andrew Poelstra
a6d19d39c7 Merge b549cb1bd2 into merged_master (Bitcoin PR #18443) 2020-11-26 01:08:37 +00:00
Andrew Poelstra
d4711bdf91 Merge 23c926d859 into merged_master (Bitcoin PR #18699) 2020-11-26 01:08:37 +00:00
Andrew Poelstra
8c572c898e Merge 42fd503819 into merged_master (Bitcoin PR #18786) 2020-11-26 01:08:37 +00:00
Andrew Poelstra
315d2556f2 Merge 0a729b0e42 into merged_master (Bitcoin PR #18783) 2020-11-26 01:08:37 +00:00
Andrew Poelstra
335af1e4c4 Merge 74a1152f25 into merged_master (Bitcoin PR #18859) 2020-11-26 01:08:36 +00:00
Andrew Poelstra
783673416d Merge afa577c323 into merged_master (Bitcoin PR #15768) 2020-11-26 01:08:36 +00:00
Andrew Poelstra
c0fda0cc05 Merge ddc0a600b3 into merged_master (Bitcoin PR #18617)
For reasons I do not really grok, this PR changes the timing behavior of the
functional tests to reliably expose a deadlock in the claimpegin RPC that has
existed since the 0.17 rebase.

The mechanism is: in `claimpegin` in src/wallet/rpcwallet.cpp:5873, we call
`AcceptToMemoryPoolWorker`. This requires cs_main to be locked, which it is
not (contrast Core's `testmempoolaccept` RPC, which similarly calls
`AcceptToMemoryPoolWorker` from the RPC thread, and locks cs_main immediately
before).

We do *say* that it is locked, in the `LockAssertion` one the line above, but
this was added in ad3d496d78 during the 0.17
rebase (PR #620), apparently to shut up some linter on OSX, and as near as I
can tell it was never true.

Anyway, `AcceptToMemoryPoolWorker` calls through a couple layers which assume
cs_main is locked, to `AcceptSingleTransaction`, which locks m_pool.cs on line
src/validation.cpp:1101. It then calls `PreChecks`, which on line 784 calls
::ChainActive(), which _actually_ locks cs_main, though only briefly. This
line is the deadlock, because we locked m_pool.cs followed by cs_main...

...meanwhile, in src/net_processing.cpp, we lock cs_main at the top of the
`PeerLogicValidation::SendMessages` loop (src/net_processing.cpp:3628). In the
same loop, in the `feefilter` message processing, we call CTxMemPool::GetMinFee
(src/net_processing.cpp:4137), which locks m_pool.cs. Deadlock.

Anyway, that explains the change to locking behavior that I added to an
otherwise test-only PR.
2020-11-26 01:08:36 +00:00
Andrew Poelstra
9ea76b54aa Merge 68ef9523d1 into merged_master (Bitcoin PR #18413) 2020-11-26 01:08:36 +00:00
Andrew Poelstra
4414990576 Merge 608359b071 into merged_master (Bitcoin PR #16426) 2020-11-26 01:08:35 +00:00
Andrew Poelstra
0d9a090459 Merge ef8ef31fd2 into merged_master (Bitcoin PR #18775) 2020-11-26 01:08:35 +00:00
Andrew Poelstra
ebfbe923c7 Merge 00c1a4d9a9 into merged_master (Bitcoin PR #18809) 2020-11-26 01:08:35 +00:00
Andrew Poelstra
bbb81f8d58 Merge cf5e3be5ea into merged_master (Bitcoin PR #18825) 2020-11-26 01:08:35 +00:00
Andrew Poelstra
0a22e1a6e6 Merge 64673b1037 into merged_master (Bitcoin PR #18780) 2020-11-26 01:08:34 +00:00
Andrew Poelstra
b86c297529 Merge afed2e98b0 into merged_master (Bitcoin PR #18810) 2020-11-26 01:08:34 +00:00
Andrew Poelstra
2cee434502 Merge 35ef3c15ef into merged_master (Bitcoin PR #18591) 2020-11-26 01:08:34 +00:00
Andrew Poelstra
7ba9c3d6ea Merge 63d5ed2fc4 into merged_master (Bitcoin PR #18437) 2020-11-26 01:08:34 +00:00
Andrew Poelstra
cd480d07b3 Merge 95a9165016 into merged_master (Bitcoin PR #18736) 2020-11-26 01:08:34 +00:00
Andrew Poelstra
5ae752cb8f Merge 0f204dd3f2 into merged_master (Bitcoin PR #18727) 2020-11-26 01:08:34 +00:00
Andrew Poelstra
c6d6e49475 Merge af2ec6b037 into merged_master (Bitcoin PR #18759) 2020-11-26 01:08:33 +00:00
Andrew Poelstra
9df3a34c65 Merge ecca2ea1d5 into merged_master (Bitcoin PR #18785) 2020-11-26 01:08:33 +00:00
Andrew Poelstra
e5f1b2cdaa Merge 0ef0d33f75 into merged_master (Bitcoin PR #18038) 2020-11-26 01:08:33 +00:00
Andrew Poelstra
e0c28ff3f2 Merge b9ba76f1c9 into merged_master (Bitcoin PR #18769) 2020-11-26 01:08:32 +00:00
Andrew Poelstra
91aca85a2a Merge 8bdb2134fc into merged_master (Bitcoin PR #18777) 2020-11-26 01:08:31 +00:00
Andrew Poelstra
1c12ae1719 Merge eef90c14ed into merged_master (Bitcoin PR #16528)
This is the 43-commit descriptor wallet PR. It was remarkably easy to merge, given
its magnitude. With this commit Elements supports importing Bitcoin descriptors
and deriving (Bitcoin) addresses, though of course it does not support blinding
yet. That is a post-rebase project.

The material changes were:

1. Changing constants in the tests (super annoying but nothing surprising)

2. Adding a missing "skip if this coin is not ours" check in src/script/sign.cpp
   which was causing us to erroneously remove existing witnesses from transactions.
   This wasn't a problem before this commit since we would only ask specific
   scriptpubkeymans to sign, and we'd never ask any to sign inputs we didn't
   own. Andy simplified the logic here to always try every scriptpubkeyman,
   which means they have to play a bit more nicely with each other.

Other than that, this was a big diff with many conflicts but literally all of
them were "we both added code" and the resolution was to take both sides.
2020-11-26 01:08:31 +00:00
Andrew Poelstra
7f37d52c1a Merge ae32e5ce3d into merged_master (Bitcoin PR #18669) 2020-11-26 01:08:31 +00:00
Andrew Poelstra
2dd753afe1 Merge 65276c7737 into merged_master (Bitcoin PR #18744) 2020-11-26 01:08:30 +00:00
Andrew Poelstra
8710909d88 Merge 6f51f6f357 into merged_master (Bitcoin PR #18754) 2020-11-26 01:08:30 +00:00
Andrew Poelstra
22cee70001 Merge 9fac600aba into merged_master (Bitcoin PR #17383) 2020-11-26 01:08:30 +00:00
Andrew Poelstra
870e7097a9 Merge 8c0f86f284 into merged_master (Bitcoin PR #18757) 2020-11-26 01:08:29 +00:00
Andrew Poelstra
6990af3107 Merge e890c15e2c into merged_master (Bitcoin PR #18671) 2020-11-26 01:08:28 +00:00
Andrew Poelstra
1ea940a2e2 Merge 4f802e59a0 into merged_master (Bitcoin PR #17509) 2020-11-26 01:08:28 +00:00
Andrew Poelstra
4b1d94e736 Merge a7a6f1ff41 into merged_master (Bitcoin PR #18575) 2020-11-26 01:08:28 +00:00
Andrew Poelstra
08d74600ea Merge 5dcb061589 into merged_master (Bitcoin PR #18702) 2020-11-26 01:08:28 +00:00
Andrew Poelstra
d958ef77a9 Merge ce4e1f0282 into merged_master (Bitcoin PR #18553) 2020-11-26 01:08:28 +00:00
Andrew Poelstra
89c3236c58 Merge 9e8e813df5 into merged_master (Bitcoin PR #18410) 2020-11-26 01:08:27 +00:00
Andrew Poelstra
b6c2e38caa Merge acb4fa0741 into merged_master (Bitcoin PR #18665) 2020-11-26 01:08:27 +00:00
Andrew Poelstra
ba95deb36c Merge 19032c750c into merged_master (Bitcoin PR #18612) 2020-11-26 01:08:27 +00:00
Andrew Poelstra
627184ba0d Merge c4c3f110eb into merged_master (Bitcoin PR #18190) 2020-11-26 01:08:26 +00:00
Andrew Poelstra
873db53fe3 Merge 3be119c0f6 into merged_master (Bitcoin PR #17579) 2020-11-26 01:08:26 +00:00