Commit graph

26592 commits

Author SHA1 Message Date
Andrew Poelstra
acae1846f6 Merge 6c647c89db into merged_master (Bitcoin PR #18738) 2020-11-26 01:08:43 +00:00
Andrew Poelstra
c0617d43b4 Merge a33901cb6d into merged_master (Bitcoin PR #18814) 2020-11-26 01:08:42 +00:00
Andrew Poelstra
f780a0ebbb Merge 246e878e78 into merged_master (Bitcoin PR #18894) 2020-11-26 01:08:42 +00:00
Andrew Poelstra
cd70e1ac42 Merge 8d17f8dc17 into merged_master (Bitcoin PR #18578) 2020-11-26 01:08:42 +00:00
Andrew Poelstra
530a413055 Merge 219c55da75 into merged_master (Bitcoin PR #16710) 2020-11-26 01:08:42 +00:00
Andrew Poelstra
66f47ea527 Merge 8da1e43b63 into merged_master (Bitcoin PR #18910) 2020-11-26 01:08:42 +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
f9a77e35ca Merge 0f2fa599ae into merged_master (Bitcoin PR #18931) 2020-11-26 01:08:41 +00:00
Andrew Poelstra
b712035c61 Merge ad1b7b1817 into merged_master (Bitcoin PR #18957) 2020-11-26 01:08:41 +00:00
Andrew Poelstra
57d9b2f216 Merge 49d237ce32 into merged_master (Bitcoin PR #18928) 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
7c5fd66303 Merge eb2ffbb7c1 into merged_master (Bitcoin PR #18914) 2020-11-26 01:08:41 +00:00
Andrew Poelstra
c74e34cf8e Merge f71a3a8829 into merged_master (Bitcoin PR #18939) 2020-11-26 01:08:41 +00:00
Andrew Poelstra
f32fd217a5 Merge ec4d27fa8b into merged_master (Bitcoin PR #18216) 2020-11-26 01:08:40 +00:00
Andrew Poelstra
1974749d21 Merge 88d8b4e182 into merged_master (Bitcoin PR #18901) 2020-11-26 01:08:40 +00:00
Andrew Poelstra
34d072006e Merge 376294cde6 into merged_master (Bitcoin PR #18866) 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
bb1ada83c9 Merge 3930014abc into merged_master (Bitcoin PR #18864) 2020-11-26 01:08:40 +00:00
Andrew Poelstra
611dedde60 Merge f54753293f into merged_master (Bitcoin PR #18905) 2020-11-26 01:08:40 +00:00
Andrew Poelstra
52b7ef99cc Merge 56611b0e24 into merged_master (Bitcoin PR #18743) 2020-11-26 01:08:39 +00:00
Andrew Poelstra
f2d9cc0620 Merge c1cd2b5a97 into merged_master (Bitcoin PR #18899) 2020-11-26 01:08:39 +00:00
Andrew Poelstra
31a9eea2af Merge 3b1e289248 into merged_master (Bitcoin PR #18535) 2020-11-26 01:08:39 +00:00
Andrew Poelstra
e42dc5493b Merge 7bcc42b403 into merged_master (Bitcoin PR #18873) 2020-11-26 01:08:39 +00:00
Andrew Poelstra
75074c1d3c Merge c6b15ec0ee into merged_master (Bitcoin PR #17874) 2020-11-26 01:08:39 +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
e991e7713b Merge d96fdc2a39 into merged_master (Bitcoin PR #18741) 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
d1fbd3b167 Merge fbd522721c into merged_master (Bitcoin PR #18885) 2020-11-26 01:08:38 +00:00
Andrew Poelstra
ca6053c5e5 Merge 52ce396b2a into merged_master (Bitcoin PR #18879) 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
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
9ea76b54aa Merge 68ef9523d1 into merged_master (Bitcoin PR #18413) 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
4414990576 Merge 608359b071 into merged_master (Bitcoin PR #16426) 2020-11-26 01:08:35 +00:00
Andrew Poelstra
d4125a30a6 Merge e5b9308920 into merged_master (Bitcoin PR #18829) 2020-11-26 01:08:35 +00:00