wallet: move lock at the top of ReleaseWallet #29155
pull dimitaracev wants to merge 1 commits into bitcoin:master from dimitaracev:wallet-move-lock-at-the-top-of-release-wallet changing 3 files +19 −10-
dimitaracev commented at 9:22 pm on December 29, 2023: contributor
-
wallet: move lock at the top of ReleaseWallet c3d4463efe
-
DrahtBot commented at 9:22 pm on December 29, 2023: contributor
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
Code Coverage
For detailed information about the code coverage, see the test coverage report.
Reviews
See the guideline for information on the review process. A summary of reviews will appear here.
Conflicts
Reviewers, this pull request conflicts with the following ones:
- #25390 (sync: introduce a thread-safe generic container and use it to remove a bunch of “GlobalMutex"es by vasild)
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.
-
DrahtBot added the label Wallet on Dec 29, 2023
-
in src/wallet/wallet.cpp:246 in c3d4463efe
247+ bool wallet_already_marked_for_unloading = false; 248 const std::string name = wallet->GetName(); 249 { 250 LOCK(g_wallet_release_mutex); 251 auto it = g_unloading_wallet_set.insert(name); 252- assert(it.second);
dimitaracev commented at 6:53 pm on December 30, 2023:Correct, this was not the issue as initially thought. The removal of this is only so that we return an appropriate message if it ever comes to this instead of crashing the node. I can change it back if it matters. Not sure if it makes sense this to lead to a node crash to be honest.
maflcko commented at 9:01 pm on December 30, 2023:I think it would be good to explain the changes, also, as mentioned previously, steps to reproduce the bug and the fix would be helpful.
furszy commented at 1:16 pm on December 31, 2023:The removal of this is only so that we return an appropriate message if it ever comes to this instead of crashing the node. I can change it back if it matters. Not sure if it makes sense this to lead to a node crash to be honest.
The current structure of the code disallows it from happening; prior to every
UnloadWallet()
call, we callRemoveWallet()
. Which ensures that we never crash at this point (https://github.com/bitcoin/bitcoin/pull/29143#issuecomment-1869817009). So, if it crashes, the assertion failure makes sense because it means we are pushing more than one pointer of the same wallet into theWalletContext
wallets vector. We could document this behavior but, as is a different topic, it should be treated separately. Either on a standalone commit or a separate PR.Also, agree with Marko that further explanations about the failure cause would be desirable. e.g. why moving the lock up to the top of
ReleaseWallet
fixes the problematic?DrahtBot added the label CI failed on Jan 15, 2024maflcko commented at 6:07 pm on February 22, 2024: memberClosing for now due to inactivity, and unclear status (why is this the correct fix?). However, a fix for this wallet crash is still needed and very much welcome.maflcko closed this on Feb 22, 2024
This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2024-12-30 15:12 UTC
More mirrored repositories can be found on mirror.b10c.me