Commit graph

786 commits

Author SHA1 Message Date
Andrew Poelstra
e10dd69c55 Merge a0e75bd31d into merged_master (Bitcoin PR #15937) 2020-11-27 20:39:27 +00:00
Andrew Poelstra
1aea27d291 Merge b4d0366b47 into merged_master (Bitcoin PR #19070) 2020-11-27 17:48:36 +00:00
Andrew Poelstra
c98788b086 Merge cb1ee1551c into merged_master (Bitcoin PR #19674) 2020-11-27 14:17:51 +00:00
Andrew Poelstra
b309341ae8 Merge 5e4fed9e58 into merged_master (Bitcoin PR #19657) 2020-11-27 04:21:24 +00:00
Andrew Poelstra
d9d1b5285b Merge 4644b13b44 into merged_master (Bitcoin PR #19632) 2020-11-27 02:13:28 +00:00
Andrew Poelstra
33545124d8 Merge 3c93623be2 into merged_master (Bitcoin PR #19489) 2020-11-27 00:53:07 +00:00
Andrew Poelstra
0c61562058 Merge 149eca433d into merged_master (Bitcoin PR #19599) 2020-11-26 21:15:20 +00:00
Andrew Poelstra
e547a98b54 Merge ccef10261e into merged_master (Bitcoin PR #18044) 2020-11-26 17:01:52 +00:00
Andrew Poelstra
f1d46ae49d Merge edfeaf6836 into merged_master (Bitcoin PR #19552) 2020-11-26 14:53:46 +00:00
Andrew Poelstra
efaef30fdb Merge 631284f09a into merged_master (Bitcoin PR #19486) 2020-11-26 01:51:47 +00:00
Andrew Poelstra
e96a115bab Merge f6072e601a into merged_master (Bitcoin PR #19368) 2020-11-26 01:09:16 +00:00
Andrew Poelstra
5402e2ba19 Merge 67881de0e3 into merged_master (Bitcoin PR #19272) 2020-11-26 01:09:12 +00:00
Andrew Poelstra
7f0653ba54 Merge 8ef15e8a86 into merged_master (Bitcoin PR #19198) 2020-11-26 01:09:11 +00:00
Andrew Poelstra
714f585800 Merge 4b5c9191e3 into merged_master (Bitcoin PR #19208) 2020-11-26 01:09:11 +00:00
Andrew Poelstra
38b86cf63f Merge 38389dd3a0 into merged_master (Bitcoin PR #19252) 2020-11-26 01:09:07 +00:00
Andrew Poelstra
9fdbb98aff Merge 5cafb46fef into merged_master (Bitcoin PR #19294) 2020-11-26 01:09:06 +00:00
Andrew Poelstra
607a572223 Merge 46bdd4b537 into merged_master (Bitcoin PR #19178) 2020-11-26 01:09:05 +00:00
Andrew Poelstra
dd4616946d Merge 85f7db2284 into merged_master (Bitcoin PR #19239) 2020-11-26 01:09:03 +00:00
Andrew Poelstra
9e70adf13e Merge 6762a627ec into merged_master (Bitcoin PR #19230) 2020-11-26 01:09:02 +00:00
Andrew Poelstra
89ca8ea199 Merge b3ec1fe811 into merged_master (Bitcoin PR #18890) 2020-11-26 01:09:01 +00:00
Andrew Poelstra
d5082ffa37 Merge 39afe5b1c6 into merged_master (Bitcoin PR #19082) 2020-11-26 01:08:58 +00:00
Andrew Poelstra
67f55c5173 Merge 234fabab90 into merged_master (Bitcoin PR #18210) 2020-11-26 01:08:57 +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
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
1fca452fcd Merge b5c423c48e into merged_master (Bitcoin PR #19014) 2020-11-26 01:08:49 +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
b29efd4af5 Merge 3eda7ea9ba into merged_master (Bitcoin PR #18764) 2020-11-26 01:08:47 +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
9ac62395d7 Merge e45fb7e0d2 into merged_master (Bitcoin PR #18877) 2020-11-26 01:08:42 +00:00
Andrew Poelstra
34d072006e Merge 376294cde6 into merged_master (Bitcoin PR #18866) 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
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
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
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
b066f21047 Merge fd48e7ad99 into merged_master (Bitcoin PR #18585) 2020-11-26 01:08:30 +00:00
Andrew Poelstra
c8bf2c631b Merge d1aa0ae1ad into merged_master (Bitcoin PR #18712) 2020-11-26 01:08:29 +00:00
Andrew Poelstra
26e416f0b6 Merge 64139803f1 into merged_master (Bitcoin PR #18690) 2020-11-26 01:08:29 +00:00
Andrew Poelstra
acdc05d56c Merge 47b94a337e into merged_master (Bitcoin PR #18732) 2020-11-26 01:08:28 +00:00
Andrew Poelstra
e234a42a47 Merge 9ea4d8326a into merged_master (Bitcoin PR #18704) 2020-11-26 01:08:26 +00:00
Andrew Poelstra
042d703f0b Merge 4ad6144ed0 into merged_master (Bitcoin PR #18672) 2020-11-26 01:08:26 +00:00