Commit graph

677 commits

Author SHA1 Message Date
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
Andrew Poelstra
3d19543983 Merge dc5da7fe7b into merged_master (Bitcoin PR #18691) 2020-11-26 01:08:25 +00:00
Andrew Poelstra
96af3c5b23 Merge d2882a012b into merged_master (Bitcoin PR #18610) 2020-11-26 01:08:25 +00:00
Andrew Poelstra
353b2ff233 Merge b690b24eb2 into merged_master (Bitcoin PR #18633) 2020-11-26 01:08:24 +00:00
Andrew Poelstra
11125c2961 Merge 6ae99aab5d into merged_master (Bitcoin PR #18692) 2020-11-26 01:08:24 +00:00
Andrew Poelstra
a9956489b2 Merge c54295c1a2 into merged_master (Bitcoin PR #18641) 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
c67b9f0c92 Merge d9fd7b5a67 into merged_master (Bitcoin PR #18596) 2020-11-26 01:08:18 +00:00
Andrew Poelstra
79067914d8 Merge a2b282c9d0 into merged_master (Bitcoin PR #18609) 2020-11-26 01:08:17 +00:00
Andrew Poelstra
9146c7899d Merge 59d6249290 into merged_master (Bitcoin PR #18593) 2020-11-26 01:08:17 +00:00
Andrew Poelstra
8078d38fd4 Merge 081dcbde66 into merged_master (Bitcoin PR #18561) 2020-11-26 01:08:15 +00:00
Andrew Poelstra
1ff8f7acff Merge c0b389b335 into merged_master (Bitcoin PR #18484) 2020-11-26 01:08:11 +00:00
Andrew Poelstra
f3f386ffee Merge cf21293ef7 into merged_master (Bitcoin PR #18515) 2020-11-26 01:08:10 +00:00
Andrew Poelstra
87d0e26d18 Merge 67a72466e1 into merged_master (Bitcoin PR #18247) 2020-11-26 01:08:06 +00:00
Andrew Poelstra
15d1e10a14 Merge d2db25233c into merged_master (Bitcoin PR #18474) 2020-11-26 01:08:06 +00:00
Andrew Poelstra
f8e3be6cb7 Merge d52ba21dff into merged_master (Bitcoin PR #18481) 2020-11-26 01:08:06 +00:00
Andrew Poelstra
9587ad280d Merge 7e1fc03b18 into merged_master (Bitcoin PR #18334) 2020-11-26 01:08:05 +00:00
Andrew Poelstra
e1f1d5dc40 Merge 67de1ee8bc into merged_master (Bitcoin PR #18378) 2020-11-26 01:07:59 +00:00
Andrew Poelstra
42372ae3a5 Merge ad04f0d8a5 into merged_master (Bitcoin PR #17319) 2020-11-26 01:07:57 +00:00
Andrew Poelstra
7bc1e4d084 Merge 24a727e23e into merged_master (Bitcoin PR #18255) 2020-11-26 01:07:53 +00:00
Andrew Poelstra
bca8bce3b7 Merge caa2f3af29 into merged_master (Bitcoin PR #12134) 2020-11-26 01:07:42 +00:00
Andrew Poelstra
bcf509470b Merge 75fb37ce68 into merged_master (Bitcoin PR #18032) 2020-11-26 01:07:40 +00:00
Andrew Poelstra
6f123becd3 Merge 1d1f8bbf57 into merged_master (Bitcoin PR #16115) 2020-11-14 19:07:24 +00:00
Andrew Poelstra
4c7d6ec20e Merge 3b69310beb into merged_master (Bitcoin PR #17984) 2020-11-14 18:40:28 +00:00
Andrew Poelstra
7c53615bb6 Merge af05bd9e1e into merged_master (Bitcoin PR #17891) 2020-11-14 16:52:07 +00:00
Andrew Poelstra
74d2e8da1b Merge 7ea3b85ecf into merged_master (Bitcoin PR #17578) 2020-11-14 16:52:04 +00:00
Andrew Poelstra
009bc2fdfb Merge 99813a9745 into merged_master (Bitcoin PR #17829) 2020-11-14 16:52:02 +00:00
Andrew Poelstra
7187ea2de7 Merge 3f1966ead6 into merged_master (Bitcoin PR #17705) 2020-11-14 16:51:57 +00:00
Andrew Poelstra
c9585d0fde Merge 3d6752779f into merged_master (Bitcoin PR #17633) 2020-11-14 16:51:56 +00:00
Andrew Poelstra
11487538e9 Merge df2b743759 into merged_master (Bitcoin PR #17675) 2020-11-14 16:51:55 +00:00
Andrew Poelstra
5a48ca16e3 Merge fee01bb053 into merged_master (Bitcoin PR #17517) 2020-11-14 16:51:52 +00:00
Andrew Poelstra
6a5fc1dd58 Merge d8a66626d6 into merged_master (Bitcoin PR #17283) 2020-11-14 16:51:50 +00:00
Andrew Poelstra
4cc150cd4a Merge e1df922132 into merged_master (Bitcoin PR #17497) 2020-11-09 23:10:12 +00:00
Andrew Poelstra
2b6199bf17 Merge c7709cbf4c into merged_master (Bitcoin PR #17469) 2020-11-09 23:10:11 +00:00
Andrew Poelstra
3613ae283d Merge f60e0684d1 into merged_master (Elements PR #773) 2020-11-09 23:10:10 +00:00
Andrew Poelstra
132dcf17c7 Merge 54a337478d into merged_master (Bitcoin PR #17378) 2020-11-09 21:20:52 +00:00
Andrew Poelstra
7494bc176f Merge bc38bb9a60 into merged_master (Bitcoin PR #17288) 2020-11-09 21:20:51 +00:00
Andrew Poelstra
a19375575a Merge 222b7d0ca7 into merged_master (Bitcoin PR #17330) 2020-11-09 21:20:49 +00:00
Andrew Poelstra
cda20329e8 Merge cab94cc074 into merged_master (Bitcoin PR #16943) 2020-11-09 21:20:48 +00:00