mirror of
https://github.com/Retropex/bitcoin.git
synced 2025-05-13 19:50:43 +02:00
test: Fix inconsistent lock order in wallet_tests/CreateWallet
This commit is contained in:
parent
cb23fe01c1
commit
e1e68b6305
@ -28,6 +28,8 @@ RPCHelpMan importmulti();
|
|||||||
RPCHelpMan dumpwallet();
|
RPCHelpMan dumpwallet();
|
||||||
RPCHelpMan importwallet();
|
RPCHelpMan importwallet();
|
||||||
|
|
||||||
|
extern RecursiveMutex cs_wallets;
|
||||||
|
|
||||||
// Ensure that fee levels defined in the wallet are at least as high
|
// Ensure that fee levels defined in the wallet are at least as high
|
||||||
// as the default levels for node policy.
|
// as the default levels for node policy.
|
||||||
static_assert(DEFAULT_TRANSACTION_MINFEE >= DEFAULT_MIN_RELAY_TX_FEE, "wallet minimum fee is smaller than default relay fee");
|
static_assert(DEFAULT_TRANSACTION_MINFEE >= DEFAULT_MIN_RELAY_TX_FEE, "wallet minimum fee is smaller than default relay fee");
|
||||||
@ -761,16 +763,18 @@ BOOST_FIXTURE_TEST_CASE(CreateWallet, TestChain100Setup)
|
|||||||
// deadlock during the sync and simulates a new block notification happening
|
// deadlock during the sync and simulates a new block notification happening
|
||||||
// as soon as possible.
|
// as soon as possible.
|
||||||
addtx_count = 0;
|
addtx_count = 0;
|
||||||
auto handler = HandleLoadWallet([&](std::unique_ptr<interfaces::Wallet> wallet) EXCLUSIVE_LOCKS_REQUIRED(wallet->wallet()->cs_wallet) {
|
auto handler = HandleLoadWallet([&](std::unique_ptr<interfaces::Wallet> wallet) EXCLUSIVE_LOCKS_REQUIRED(wallet->wallet()->cs_wallet, cs_wallets) {
|
||||||
BOOST_CHECK(rescan_completed);
|
BOOST_CHECK(rescan_completed);
|
||||||
m_coinbase_txns.push_back(CreateAndProcessBlock({}, GetScriptForRawPubKey(coinbaseKey.GetPubKey())).vtx[0]);
|
m_coinbase_txns.push_back(CreateAndProcessBlock({}, GetScriptForRawPubKey(coinbaseKey.GetPubKey())).vtx[0]);
|
||||||
block_tx = TestSimpleSpend(*m_coinbase_txns[2], 0, coinbaseKey, GetScriptForRawPubKey(key.GetPubKey()));
|
block_tx = TestSimpleSpend(*m_coinbase_txns[2], 0, coinbaseKey, GetScriptForRawPubKey(key.GetPubKey()));
|
||||||
m_coinbase_txns.push_back(CreateAndProcessBlock({block_tx}, GetScriptForRawPubKey(coinbaseKey.GetPubKey())).vtx[0]);
|
m_coinbase_txns.push_back(CreateAndProcessBlock({block_tx}, GetScriptForRawPubKey(coinbaseKey.GetPubKey())).vtx[0]);
|
||||||
mempool_tx = TestSimpleSpend(*m_coinbase_txns[3], 0, coinbaseKey, GetScriptForRawPubKey(key.GetPubKey()));
|
mempool_tx = TestSimpleSpend(*m_coinbase_txns[3], 0, coinbaseKey, GetScriptForRawPubKey(key.GetPubKey()));
|
||||||
BOOST_CHECK(m_node.chain->broadcastTransaction(MakeTransactionRef(mempool_tx), DEFAULT_TRANSACTION_MAXFEE, false, error));
|
BOOST_CHECK(m_node.chain->broadcastTransaction(MakeTransactionRef(mempool_tx), DEFAULT_TRANSACTION_MAXFEE, false, error));
|
||||||
|
LEAVE_CRITICAL_SECTION(cs_wallets);
|
||||||
LEAVE_CRITICAL_SECTION(wallet->wallet()->cs_wallet);
|
LEAVE_CRITICAL_SECTION(wallet->wallet()->cs_wallet);
|
||||||
SyncWithValidationInterfaceQueue();
|
SyncWithValidationInterfaceQueue();
|
||||||
ENTER_CRITICAL_SECTION(wallet->wallet()->cs_wallet);
|
ENTER_CRITICAL_SECTION(wallet->wallet()->cs_wallet);
|
||||||
|
ENTER_CRITICAL_SECTION(cs_wallets);
|
||||||
});
|
});
|
||||||
wallet = TestLoadWallet(*m_node.chain);
|
wallet = TestLoadWallet(*m_node.chain);
|
||||||
BOOST_CHECK_EQUAL(addtx_count, 4);
|
BOOST_CHECK_EQUAL(addtx_count, 4);
|
||||||
|
@ -52,7 +52,7 @@ const std::map<uint64_t,std::string> WALLET_FLAG_CAVEATS{
|
|||||||
|
|
||||||
static const size_t OUTPUT_GROUP_MAX_ENTRIES = 10;
|
static const size_t OUTPUT_GROUP_MAX_ENTRIES = 10;
|
||||||
|
|
||||||
static RecursiveMutex cs_wallets;
|
RecursiveMutex cs_wallets;
|
||||||
static std::vector<std::shared_ptr<CWallet>> vpwallets GUARDED_BY(cs_wallets);
|
static std::vector<std::shared_ptr<CWallet>> vpwallets GUARDED_BY(cs_wallets);
|
||||||
static std::list<LoadWalletFn> g_load_wallet_fns GUARDED_BY(cs_wallets);
|
static std::list<LoadWalletFn> g_load_wallet_fns GUARDED_BY(cs_wallets);
|
||||||
|
|
||||||
|
@ -32,7 +32,6 @@ deadlock:CConnman::ForNode
|
|||||||
deadlock:CConnman::GetNodeStats
|
deadlock:CConnman::GetNodeStats
|
||||||
deadlock:CChainState::ConnectTip
|
deadlock:CChainState::ConnectTip
|
||||||
deadlock:UpdateTip
|
deadlock:UpdateTip
|
||||||
deadlock:wallet_tests::CreateWallet
|
|
||||||
|
|
||||||
# WalletBatch (unidentified deadlock)
|
# WalletBatch (unidentified deadlock)
|
||||||
deadlock:WalletBatch
|
deadlock:WalletBatch
|
||||||
|
Loading…
Reference in New Issue
Block a user