Commit graph

222 commits

Author SHA1 Message Date
Andrew Poelstra
bf32589a16 Merge 4fa3157014 into merged_master (Bitcoin PR #18929) 2020-11-26 01:08:41 +00:00
Andrew Poelstra
1974749d21 Merge 88d8b4e182 into merged_master (Bitcoin PR #18901) 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
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
d4125a30a6 Merge e5b9308920 into merged_master (Bitcoin PR #18829) 2020-11-26 01:08:35 +00:00
Andrew Poelstra
2cee434502 Merge 35ef3c15ef into merged_master (Bitcoin PR #18591) 2020-11-26 01:08:34 +00:00
Andrew Poelstra
a47016dcdb Merge ab91a0e0fc into merged_master (Bitcoin PR #18798) 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
5e18722f6a Merge a483ffd689 into merged_master (Bitcoin PR #18735) 2020-11-26 01:08:32 +00:00
Andrew Poelstra
f9443bf23f Merge ad04130742 into merged_master (Bitcoin PR #18799) 2020-11-26 01:08:32 +00:00
Andrew Poelstra
bd525a9dcd Merge 5352d14b37 into merged_master (Bitcoin PR #18778) 2020-11-26 01:08:31 +00:00
Andrew Poelstra
442dfa8bff Merge fc00e651e4 into merged_master (Bitcoin PR #18705) 2020-11-26 01:08:26 +00:00
Andrew Poelstra
51efdc2d8b Merge d7bdba460c into merged_master (Bitcoin PR #18683) 2020-11-26 01:08:24 +00:00
Andrew Poelstra
fd37b7c5d6 Merge 54f812d9d2 into merged_master (Bitcoin PR #18673) 2020-11-26 01:08:23 +00:00
Andrew Poelstra
2119e3a935 Merge 447f8676b2 into merged_master (Bitcoin PR #18667) 2020-11-26 01:08:22 +00:00
Andrew Poelstra
c729046501 Merge 6ef45bc968 into merged_master (Bitcoin PR #18581) 2020-11-26 01:08:18 +00:00
Andrew Poelstra
295275e76c Merge a5623ba89f into merged_master (Bitcoin PR #18588) 2020-11-26 01:08:17 +00:00
Andrew Poelstra
9729ead815 Merge 1b30761360 into merged_master (Bitcoin PR #16367)
For the sake of getting on with the rebase, I just re-added all of bitcoin-common
and bitcoin-server to bitcoin-wallet. We should revisit and try to clean this
up in future, to try to achieve the same separation that Core has.
2020-11-26 01:08:16 +00:00
Andrew Poelstra
0a82500424 Merge 1ae366ecb0 into merged_master (Bitcoin PR #18569) 2020-11-26 01:08:14 +00:00
Andrew Poelstra
12b33a96c3 Merge dcef5ad6ec into merged_master (Bitcoin PR #18562) 2020-11-26 01:08:14 +00:00
Andrew Poelstra
3b19aa37cd Merge b97e3a7349 into merged_master (Bitcoin PR #18477) 2020-11-26 01:08:06 +00:00
Andrew Poelstra
0e2b0efe75 Merge f3a91ab0ed into merged_master (Bitcoin PR #18438) 2020-11-26 01:08:02 +00:00
Andrew Poelstra
bf3d25155f Merge 7c94225026 into merged_master (Bitcoin PR #18430) 2020-11-26 01:08:01 +00:00
Andrew Poelstra
ff1454245a Merge d478a737db into merged_master (Bitcoin PR #18392) 2020-11-26 01:08:00 +00:00
Andrew Poelstra
bf899b9e7f Merge 16dfaed1b7 into merged_master (Bitcoin PR #18304) 2020-11-26 01:07:52 +00:00
Andrew Poelstra
0bfe4eb6c4 Merge 5d92ac26ed into merged_master (Bitcoin PR #18264) 2020-11-26 01:07:52 +00:00
Andrew Poelstra
cdeb19ce22 Merge 088604221b into merged_master (Bitcoin PR #18253) 2020-11-26 01:07:48 +00:00
Andrew Poelstra
1ce4e7c713 Merge a674e89d27 into merged_master (Bitcoin PR #18162) 2020-11-26 01:07:45 +00:00
Andrew Poelstra
e4c8881cdd Merge eddcbfb109 into merged_master (Bitcoin PR #18166) 2020-11-26 01:07:44 +00:00
Andrew Poelstra
464b206bfb Merge 33861a8367 into merged_master (Bitcoin PR #18145) 2020-11-26 01:07:43 +00:00
Andrew Poelstra
bca8bce3b7 Merge caa2f3af29 into merged_master (Bitcoin PR #12134) 2020-11-26 01:07:42 +00:00
Andrew Poelstra
68844be4f2 Merge b063cb690f into merged_master (Bitcoin PR #18081) 2020-11-26 01:07:41 +00:00
Andrew Poelstra
47d76259bf Merge 22d11187ee into merged_master (Bitcoin PR #17398) 2020-11-26 01:07:41 +00:00
Andrew Poelstra
5a603ed0ac Merge c8ce2632eb into merged_master (Bitcoin PR #16392) 2020-11-26 00:29:45 +00:00
Andrew Poelstra
6bdfee52c0 Merge 4a07233076 into merged_master (Bitcoin PR #17767) 2020-11-14 16:52:11 +00:00
Andrew Poelstra
be24656ac4 Merge 2aaeca50b2 into merged_master (Bitcoin PR #17900)
travis again..
2020-11-14 16:52:08 +00:00
Andrew Poelstra
7c53615bb6 Merge af05bd9e1e into merged_master (Bitcoin PR #17891) 2020-11-14 16:52:07 +00:00
Andrew Poelstra
1e9eff8c6d Merge 52900a764c into merged_master (Bitcoin PR #17849) 2020-11-14 16:52:03 +00:00
Andrew Poelstra
009bc2fdfb Merge 99813a9745 into merged_master (Bitcoin PR #17829) 2020-11-14 16:52:02 +00:00
Andrew Poelstra
ce1aa041cb Merge 890eac8f82 into merged_master (Bitcoin PR #17725)
Another travis mess
2020-11-14 16:52:00 +00:00
Andrew Poelstra
b34f506353 Merge a54c16cdb6 into merged_master (Bitcoin PR #17661) 2020-11-14 16:52:00 +00:00
Andrew Poelstra
80212a63e2 Merge fc0da027e8 into merged_master (Bitcoin PR #17635)
This is another one where git sorta mangled .travis.yml and I didn't bother
trying to sort it out. Just took the original code for every conflict. We'll
pretty-much have to redo the CI post-rebase.
2020-11-14 16:51:54 +00:00
Andrew Poelstra
719c7784db Merge cf43f3f0a8 into merged_master (Bitcoin PR #17674) 2020-11-14 16:51:53 +00:00
Andrew Poelstra
5a48ca16e3 Merge fee01bb053 into merged_master (Bitcoin PR #17517) 2020-11-14 16:51:52 +00:00
Andrew Poelstra
df14d3c511 Merge 1705f1949a into merged_master (Bitcoin PR #17549) 2020-11-14 16:51:51 +00:00
Andrew Poelstra
c3c860b38a Merge 69ca6cdd66 into merged_master (Bitcoin PR #17599) 2020-11-14 16:51:51 +00:00
Andrew Poelstra
b4d7d9d503 Merge 1f59885d27 into merged_master (Bitcoin PR #17361) 2020-11-14 16:51:50 +00:00
Andrew Poelstra
0e603ca0d7 Merge 2c1c43754b into merged_master (Bitcoin PR #17591) 2020-11-14 16:51:49 +00:00
Andrew Poelstra
810568e0fa Merge a6f5b6f47d into merged_master (Bitcoin PR #17550) 2020-11-14 16:51:48 +00:00