Commit graph

3207 commits

Author SHA1 Message Date
Andrew Poelstra
67f55c5173 Merge 234fabab90 into merged_master (Bitcoin PR #18210) 2020-11-26 01:08:57 +00:00
Andrew Poelstra
5d22dc9e40 Merge 575589a62e into merged_master (Bitcoin PR #19041) 2020-11-26 01:08:57 +00:00
Andrew Poelstra
92f57dee9c Merge bdedfcf076 into merged_master (Bitcoin PR #18974) 2020-11-26 01:08:57 +00:00
Andrew Poelstra
c8459659ed Merge 3657aee2d2 into merged_master (Bitcoin PR #18982) 2020-11-26 01:08:56 +00:00
Andrew Poelstra
492c24eba5 Merge 45a1489997 into merged_master (Bitcoin PR #19122) 2020-11-26 01:08:56 +00:00
Andrew Poelstra
207e69c339 Merge a8327fd71f into merged_master (Bitcoin PR #19072) 2020-11-26 01:08:55 +00:00
Andrew Poelstra
927a580a42 Merge 07d0e0d59f into merged_master (Bitcoin PR #19044) 2020-11-26 01:08:55 +00:00
Andrew Poelstra
b23acd5046 Merge dec067f5a0 into merged_master (Bitcoin PR #18965) 2020-11-26 01:08:54 +00:00
Andrew Poelstra
531cdf3ca5 Merge 826fe9c667 into merged_master (Bitcoin PR #18807) 2020-11-26 01:08:54 +00:00
Andrew Poelstra
29f0416f1c Merge e478b11db0 into merged_master (Bitcoin PR #19110) 2020-11-26 01:08:54 +00:00
Andrew Poelstra
9410608056 Merge c19fd96694 into merged_master (Bitcoin PR #19022) 2020-11-26 01:08:54 +00:00
Andrew Poelstra
d38085da61 Merge 520e435b5e into merged_master (Bitcoin PR #18918) 2020-11-26 01:08:51 +00:00
Andrew Poelstra
d79ece79c4 Merge 4af01b37d4 into merged_master (Bitcoin PR #19060) 2020-11-26 01:08:50 +00:00
Andrew Poelstra
62a9d9569c Merge 7d32cce3e7 into merged_master (Bitcoin PR #19010) 2020-11-26 01:08:50 +00:00
Andrew Poelstra
3b7c182626 Merge 24f7029064 into merged_master (Bitcoin PR #18594) 2020-11-26 01:08:49 +00:00
Andrew Poelstra
1fca452fcd Merge b5c423c48e into merged_master (Bitcoin PR #19014) 2020-11-26 01:08:49 +00:00
Andrew Poelstra
5800ec9196 Merge ccd85b57af into merged_master (Bitcoin PR #17681) 2020-11-26 01:08:48 +00:00
Andrew Poelstra
d0b2badc94 Merge ad3a61c5f5 into merged_master (Bitcoin PR #18895) 2020-11-26 01:08:48 +00:00
Andrew Poelstra
f785ad353f Merge 99e5e21b38 into merged_master (Bitcoin PR #19023) 2020-11-26 01:08:48 +00:00
Andrew Poelstra
13f4a26538 Merge cfe22a5f9e into merged_master (Bitcoin PR #18530) 2020-11-26 01:08:47 +00:00
Andrew Poelstra
b29efd4af5 Merge 3eda7ea9ba into merged_master (Bitcoin PR #18764) 2020-11-26 01:08:47 +00:00
Andrew Poelstra
e1d89a5742 Merge bd5ec7c528 into merged_master (Bitcoin PR #19006) 2020-11-26 01:08:46 +00:00
Andrew Poelstra
2a9f3c220f Merge aa8d76806c into merged_master (Bitcoin PR #17946) 2020-11-26 01:08:46 +00:00
Andrew Poelstra
dccd3297b0 Merge 362f9c60a5 into merged_master (Bitcoin PR #18986) 2020-11-26 01:08:45 +00:00
Andrew Poelstra
6a447f792f Merge f8123d483c into merged_master (Bitcoin PR #18952) 2020-11-26 01:08:45 +00:00
Andrew Poelstra
098fff6e44 Merge a9a6d946e4 into merged_master (Bitcoin PR #18888) 2020-11-26 01:08:43 +00:00
Andrew Poelstra
39493d33b7 Merge 99c03728c0 into merged_master (Bitcoin PR #18878) 2020-11-26 01:08:43 +00:00
Andrew Poelstra
9ac62395d7 Merge e45fb7e0d2 into merged_master (Bitcoin PR #18877) 2020-11-26 01:08:42 +00:00
Andrew Poelstra
bf32589a16 Merge 4fa3157014 into merged_master (Bitcoin PR #18929) 2020-11-26 01:08:41 +00:00
Andrew Poelstra
bda1054131 Merge 7a5767423f into merged_master (Bitcoin PR #18808) 2020-11-26 01:08:41 +00:00
Andrew Poelstra
34d072006e Merge 376294cde6 into merged_master (Bitcoin PR #18866) 2020-11-26 01:08:40 +00:00
Andrew Poelstra
bb1ada83c9 Merge 3930014abc into merged_master (Bitcoin PR #18864) 2020-11-26 01:08:40 +00:00
Andrew Poelstra
e42dc5493b Merge 7bcc42b403 into merged_master (Bitcoin PR #18873) 2020-11-26 01:08:39 +00:00
Andrew Poelstra
e991e7713b Merge d96fdc2a39 into merged_master (Bitcoin PR #18741) 2020-11-26 01:08:38 +00:00
Andrew Poelstra
d4711bdf91 Merge 23c926d859 into merged_master (Bitcoin PR #18699) 2020-11-26 01:08:37 +00:00
Andrew Poelstra
e58322b8aa Merge 2e6a16b968 into merged_master (Bitcoin PR #18855) 2020-11-26 01:08:36 +00:00
Andrew Poelstra
cdc4c006f4 Merge cce034b028 into merged_master (Bitcoin PR #18839) 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
2d0adcc65b Merge 844d2070a2 into merged_master (Bitcoin PR #18828) 2020-11-26 01:08:35 +00:00
Andrew Poelstra
503f615f81 Merge a66ba6d029 into merged_master (Bitcoin PR #18576) 2020-11-26 01:08:35 +00:00
Andrew Poelstra
87ae5b27e7 Merge 36c0abd8f6 into merged_master (Bitcoin PR #18726) 2020-11-26 01:08:34 +00:00
Andrew Poelstra
252c3a223c Merge 978c5a2122 into merged_master (Bitcoin PR #18485) 2020-11-26 01:08:33 +00:00
Andrew Poelstra
733d5cf974 Merge e302830fae into merged_master (Bitcoin PR #18774) 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
48d43d0a8a Merge ba348dbc51 into merged_master (Bitcoin PR #18805) 2020-11-26 01:08:33 +00:00
Andrew Poelstra
8ef5b8bb7f Merge 6a60bfc76c into merged_master (Bitcoin PR #18765) 2020-11-26 01:08:32 +00:00
Andrew Poelstra
60b8726cbb Merge 65fb3dfc8d into merged_master (Bitcoin PR #18556) 2020-11-26 01:08:32 +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
e678252c81 Merge 9ddfce6712 into merged_master (Bitcoin PR #18753) 2020-11-26 01:08:31 +00:00
Andrew Poelstra
56711e565a Merge 3cf464de2e into merged_master (Bitcoin PR #18770) 2020-11-26 01:08:31 +00:00