Use shared pointers only in validation interface #18354

pull bvbfan wants to merge 3 commits into bitcoin:master from bvbfan:master changing 29 files +181 −176
  1. bvbfan commented at 5:27 PM on March 15, 2020: contributor

    This pull request fully replace #18279 it fix 3 issues with wallet

    1. Crash in wallet destructor while it tries to delete mutex while it's hold by notification thread
    2. Crash in notification disconnect due to notification callback is set to nullptr before unregister interface is done
    3. Ensure unregister interface has no more background callbacks before returning to notification disconnect
  2. DrahtBot added the label Validation on Mar 15, 2020
  3. DrahtBot added the label Wallet on Mar 15, 2020
  4. DrahtBot commented at 7:12 PM on March 15, 2020: contributor

    <!--e57a25ab6845829454e8d69fc972939a-->

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    <!--174a7506f384e20aa4161008e828411d-->

    Conflicts

    Reviewers, this pull request conflicts with the following ones:

    • #20323 (tests: Create or use existing properly initialized NodeContexts by dongcarl)
    • #20228 (addrman: Make addrman a top-level component by jnewbery)
    • #20217 (net: Remove g_relay_txes by jnewbery)
    • #19833 (wallet: Avoid locking cs_wallet recursively by promag)
    • #19521 (Coinstats Index (without UTXO set hash) by fjahr)
    • #19425 (refactor: Get rid of more redundant chain methods by ryanofsky)
    • #18766 (Disable fee estimation in blocksonly mode (by removing the fee estimates global) by darosior)
    • #14053 (Add address-based index (attempt 4?) by marcinja)

    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.

  5. DrahtBot cross-referenced this on Mar 15, 2020 from issue Fix wallet unload race condition by promag
  6. laanwj added the label Bug on Mar 16, 2020
  7. bvbfan commented at 1:46 PM on March 16, 2020: contributor

    Simplify patch, make more fuzzing test

    #!/bin/bash
    while [ 1 ]
    do
        src/bitcoin-cli -testnet loadwallet test
        src/bitcoin-cli -testnet unloadwallet test3
        src/bitcoin-cli -testnet loadwallet test2
        src/bitcoin-cli -testnet unloadwallet test
        src/bitcoin-cli -testnet loadwallet test3
        src/bitcoin-cli -testnet unloadwallet test2
    done
    
  8. in src/scheduler.cpp:205 in 16e9578c1e outdated
     208 | +
     209 | +    auto shouldProcessQueue = [this]() {
     210 |          LOCK(m_cs_callbacks_pending);
     211 | -        should_continue = !m_callbacks_pending.empty();
     212 | -    }
     213 | +        return !m_callbacks_pending.empty() || m_are_callbacks_running;
    


    ryanofsky commented at 2:17 PM on March 16, 2020:

    Why's this adding || m_are_callbacks_running? In the case where m_callbacks_pending is empty and m_are_callbacks_running is true, won't ProcessQueue return immediately and the loop below be a busy loop consuming 100% of CPU?

    Also could use while (WITH_LOCK(m_cs_callbacks_pending, return ...)) { instead of a lambda


    bvbfan commented at 5:01 PM on March 16, 2020:

    Why's this adding || m_are_callbacks_running? In the case where m_callbacks_pending is empty and m_are_callbacks_running is true, won't ProcessQueue return immediately and the loop below be a busy loop consuming 100% of CPU?

    It's same without m_are_callbacks_running i.e. while loop consume a lot of CPU. The change is to ensure notification thread is finish processing callback.


    ryanofsky commented at 5:28 PM on March 16, 2020:

    Why's this adding || m_are_callbacks_running? In the case where m_callbacks_pending is empty and m_are_callbacks_running is true, won't ProcessQueue return immediately and the loop below be a busy loop consuming 100% of CPU?

    Oh, you're right. The current code is can busy-loop when the queue non-empty and running is true, though AreThreadsServicingQueue check makes this less likely to happen. I still don't understand why you now want to busy loop in the case where the queue is empty and running is true. Again prefer just using shared_ptr to avoid use-after-free bugs instead of doing more complicated things with the scheduler.


    bvbfan commented at 6:11 PM on March 16, 2020:

    Got'cha, you're right. I'll investigate for solution.


    ryanofsky commented at 6:34 PM on March 16, 2020:

    Got'cha, you're right. I'll investigate for solution.

    Again would suggest closing this PR and using #18338 which I think is more consistent and less fragile fix


    bvbfan commented at 6:35 PM on March 16, 2020:

    AreThreadsServicingQueue is not needed at all. Its purpose is obsolete in the context.

  9. in src/wallet/wallet.cpp:138 in 16e9578c1e outdated
     134 | @@ -137,6 +135,8 @@ void UnloadWallet(std::shared_ptr<CWallet>&& wallet)
     135 |      // Notify the unload intent so that all remaining shared pointers are
     136 |      // released.
     137 |      wallet->NotifyUnload();
     138 | +    wallet->BlockUntilSyncedToCurrentChain();
     139 | +    wallet->m_chain_notifications_handler.reset();
    


    ryanofsky commented at 2:24 PM on March 16, 2020:

    This is a partial fix for the bug, not a full fix. While calling BlockUntilSyncedToCurrentChain before reset makes it less likely the wallet pointer will be deleted while still in use, it's still possible for a blockconnected or other notification to be running when wallet.reset() is called below



    ryanofsky commented at 5:10 PM on March 16, 2020:

    As I understand it, the EmptyQueue call added there (in UnregisterValidationInterface) does nothing if m_pscheduler->AreThreadsServicingQueue() is true, which it always is, except during shutdown. So a notification could still be in progress and raw wallet pointer still in use after the UnregisterValidationInterface call and handler.reset() call and wallet.reset() call. Adding the BlockUntilSyncedToCurrentChain right before probably makes this much less unlikely, but not impossible. #18338 is be a more direct, race-free fix for the issue, because it gets rid of the raw pointer and uses shared_ptr for all wallet references.

  10. ryanofsky commented at 2:28 PM on March 16, 2020: contributor

    #18338 may still have some issues, but I think it is probably a better approach and I would suggest abandoning this.

  11. bvbfan commented at 6:49 AM on March 17, 2020: contributor

    Use future instead of raw loop for waiting pending callbacks. It still much matters to me compared to #18338

  12. DrahtBot cross-referenced this on Mar 20, 2020 from issue Multiprocess bitcoin by ryanofsky
  13. promag changes_requested
  14. promag commented at 12:31 AM on March 23, 2020: member

    Approach NACK. The problem is not in the scheduler, but in the invalid assumption that it's safe to delete a CValidationInterface instance right after UnregisterValidationInterface - it's wrong because of boost::signals2 threading model.

  15. bvbfan commented at 11:39 AM on March 24, 2020: contributor

    @promag same as your approach with more aggressive refactor + missing virtual desctructors.

  16. bvbfan renamed this:
    Protect wallet from scheduler race conditions.
    Protect wallet from by using shared pointer
    on Mar 24, 2020
  17. bvbfan renamed this:
    Protect wallet from by using shared pointer
    Protect wallet by using shared pointers
    on Mar 24, 2020
  18. DrahtBot cross-referenced this on Mar 24, 2020 from issue Return BlockValidationState from ProcessNewBlock if CheckBlock/AcceptBlock fails by jnewbery
  19. ryanofsky commented at 1:35 PM on March 25, 2020: contributor

    Concept ACK, though this is making a lot of changes in a single commit. The changes will probably get simpler if #18338 is merged first, and maybe they can be broken up into smaller commits. Could consider rebasing on top of #18338 of you don't want to wait for it to be merged. I'd also encourage you to review #18338!

  20. ryanofsky commented at 1:48 PM on March 25, 2020: contributor

    Oh, just saw this PR has expanded since I looked at it previously. I think some of the uses of shared_ptr / weak_ptr here like the new ones added in CWalletTx do not make sense. shared_ptr / weak_ptr only make sense when lifetime of the reference doesn't have a definite scope. For cases like CWalletTx where the wallet reference can't outlive the wallet, CWallet& makes more sense than weak_ptr<CWallet>. (Also, though in that specific case, it would be preferable to stop storing the wallet references entirely since they are redundant and no CWalletTx method is ever called without already having a reference to the wallet).

    It would probably make sense to break this PR up into multiple commits so individual changes here can be understood and reviewed more easily

  21. DrahtBot cross-referenced this on Mar 25, 2020 from issue wallet: remove deprecated fee bumping by totalFee by jonatack
  22. DrahtBot cross-referenced this on Mar 25, 2020 from issue refactor: consolidate sendmany and sendtoaddress code by Sjors
  23. DrahtBot cross-referenced this on Mar 25, 2020 from issue [WIP] Index for UTXO Set Statistics by fjahr
  24. bvbfan commented at 5:41 PM on March 25, 2020: contributor

    shared_ptr / weak_ptr only make sense when lifetime of the reference doesn't have a definite scope.

    I agree, in plus it defines no ownership. I agree, that reference makes much more sense here, too

  25. DrahtBot cross-referenced this on Mar 25, 2020 from issue wallet: Remove calls to Chain::Lock methods by ryanofsky
  26. DrahtBot cross-referenced this on Mar 25, 2020 from issue wallet: Keep inactive seeds after sethdseed and derive keys from them as needed by achow101
  27. DrahtBot cross-referenced this on Mar 25, 2020 from issue [refactor] Merge getreceivedby tally into GetReceived function by andrewtoth
  28. DrahtBot cross-referenced this on Mar 25, 2020 from issue Add Single Random Draw as an additional coin selection algorithm by achow101
  29. DrahtBot cross-referenced this on Mar 25, 2020 from issue Use effective values throughout coin selection by achow101
  30. DrahtBot cross-referenced this on Mar 25, 2020 from issue Allow fundrawtransaction and walletcreatefundedpsbt to take external inputs by achow101
  31. DrahtBot cross-referenced this on Mar 25, 2020 from issue wallet: reduce loading time by using unordered maps by achow101
  32. DrahtBot cross-referenced this on Mar 25, 2020 from issue Native Descriptor Wallets using DescriptorScriptPubKeyMan by achow101
  33. DrahtBot cross-referenced this on Mar 25, 2020 from issue Serve BIP 157 compact filters by jimpo
  34. DrahtBot cross-referenced this on Mar 25, 2020 from issue [rpc] don't automatically append inputs in walletcreatefundedpsbt by Sjors
  35. DrahtBot cross-referenced this on Mar 25, 2020 from issue More thread safety annotation coverage by ajtowns
  36. DrahtBot cross-referenced this on Mar 25, 2020 from issue Replace -upgradewallet startup option with upgradewallet RPC by achow101
  37. DrahtBot cross-referenced this on Mar 25, 2020 from issue rpc: Raise error in getbalance if minconf is not zero by promag
  38. DrahtBot cross-referenced this on Mar 25, 2020 from issue rpc: Change importwallet to return additional errors by marcinja
  39. DrahtBot cross-referenced this on Mar 25, 2020 from issue Add address-based index (attempt 4?) by marcinja
  40. DrahtBot cross-referenced this on Mar 25, 2020 from issue [wallet] [rpc] sendtoaddress/sendmany: Add explicit feerate option by kallewoof
  41. DrahtBot cross-referenced this on Mar 25, 2020 from issue Remove CWalletTx merging logic from AddToWallet by ryanofsky
  42. bvbfan commented at 9:47 AM on March 26, 2020: contributor

    Use Optional instead of weak_ptr, i can't reproduce CI errors, all tests + functional ones passes in Linux x64.

  43. DrahtBot added the label Needs rebase on Mar 26, 2020
  44. DrahtBot cross-referenced this on Mar 26, 2020 from issue wallet: allow transaction without change if keypool is empty by Sjors
  45. DrahtBot removed the label Needs rebase on Mar 27, 2020
  46. DrahtBot cross-referenced this on Mar 27, 2020 from issue UI external signer support (e.g. hardware wallet) by Sjors
  47. DrahtBot cross-referenced this on Mar 27, 2020 from issue External signer support - Wallet Box edition by Sjors
  48. DrahtBot cross-referenced this on Mar 27, 2020 from issue test: shift coverage from getunconfirmedbalance to getbalances by jonatack
  49. DrahtBot cross-referenced this on Mar 28, 2020 from issue Replace current benchmarking framework with nanobench by martinus
  50. DrahtBot cross-referenced this on Mar 28, 2020 from issue wallet: Handle duplicate fileid exception by promag
  51. DrahtBot cross-referenced this on Mar 28, 2020 from issue rpc: remove unused getbalances() code by jonatack
  52. DrahtBot cross-referenced this on Mar 28, 2020 from issue WIP NOMERGE [bench] gitian builds for OP_IF bench by MarcoFalke
  53. DrahtBot added the label Needs rebase on Mar 28, 2020
  54. DrahtBot removed the label Needs rebase on Mar 30, 2020
  55. DrahtBot cross-referenced this on Mar 30, 2020 from issue Build: Move wallet RPCs to their own libbitcoin_walletrpcs module by luke-jr
  56. DrahtBot cross-referenced this on Mar 30, 2020 from issue rpc: Improve documentation and return value of settxfee by fjahr
  57. DrahtBot cross-referenced this on Mar 30, 2020 from issue net: Add missing cs_vNodes lock by MarcoFalke
  58. DrahtBot cross-referenced this on Mar 30, 2020 from issue qa: Test shared validation interface by promag
  59. DrahtBot cross-referenced this on Mar 31, 2020 from issue RPC: Show fee in results for signrawtransaction* for segwit inputs by luke-jr
  60. DrahtBot added the label Needs rebase on Mar 31, 2020
  61. MarcoFalke commented at 2:08 PM on March 31, 2020: member

    Loosk like there are some cleanups from #18338 (comment) that can be addressed here

  62. DrahtBot cross-referenced this on Apr 1, 2020 from issue rpc: Fix rpcRunLater race in walletpassphrase by promag
  63. DrahtBot removed the label Needs rebase on Apr 1, 2020
  64. DrahtBot cross-referenced this on Apr 1, 2020 from issue Wallet passive startup by ryanofsky
  65. DrahtBot cross-referenced this on Apr 1, 2020 from issue rpc: Make rpc documentation not depend on call-time rpc args by MarcoFalke
  66. DrahtBot cross-referenced this on Apr 3, 2020 from issue Bugfix: Wallet: Safely deal with change in the address book by luke-jr
  67. DrahtBot added the label Needs rebase on Apr 3, 2020
  68. DrahtBot removed the label Needs rebase on Apr 28, 2020
  69. DrahtBot cross-referenced this on Apr 28, 2020 from issue wip: Only support shared validation interfaces by promag
  70. DrahtBot cross-referenced this on Apr 28, 2020 from issue bench: Start nodes with -nodebuglogfile by MarcoFalke
  71. DrahtBot cross-referenced this on Apr 28, 2020 from issue miner: Avoid stack-use-after-return in validationinterface by MarcoFalke
  72. DrahtBot cross-referenced this on Apr 28, 2020 from issue Allow simple multiwallet rpc calls by jonasschnelli
  73. DrahtBot cross-referenced this on Apr 28, 2020 from issue test: Add CreateWalletFromFile test by ryanofsky
  74. DrahtBot cross-referenced this on Apr 28, 2020 from issue wallet: Avoid translating RPC errors by MarcoFalke
  75. DrahtBot cross-referenced this on Apr 28, 2020 from issue Make g_chainman internal to validation by MarcoFalke
  76. DrahtBot cross-referenced this on Apr 28, 2020 from issue rpc: separate bumpfee's psbt creation function into psbtbumpfee by achow101
  77. DrahtBot cross-referenced this on Apr 28, 2020 from issue refactor: Remove CAddressBookData::destdata by ryanofsky
  78. DrahtBot cross-referenced this on Apr 28, 2020 from issue [wallet] Track conflicted transactions removed from mempool and fix UI notifications by ariard
  79. DrahtBot cross-referenced this on Apr 28, 2020 from issue rpc: replace raw pointers with shared_ptrs by brakmic
  80. DrahtBot cross-referenced this on Apr 28, 2020 from issue rpc: return block hash & height in getbalances, gettransaction & getwalletinfo JSONs by brakmic
  81. DrahtBot cross-referenced this on Apr 28, 2020 from issue Reverse cs_main, cs_wallet lock order and reduce cs_main locking by ariard
  82. DrahtBot cross-referenced this on Apr 29, 2020 from issue rpc: Relock wallet only if most recent callback by promag
  83. DrahtBot added the label Needs rebase on Apr 29, 2020
  84. DrahtBot removed the label Needs rebase on May 1, 2020
  85. DrahtBot added the label Needs rebase on May 1, 2020
  86. DrahtBot cross-referenced this on May 1, 2020 from issue rpc: remove deprecated CRPCCommand constructor by MarcoFalke
  87. DrahtBot removed the label Needs rebase on May 1, 2020
  88. bvbfan commented at 9:39 AM on May 2, 2020: contributor

    Are you interested in this patch or you prefer to be closed? The changes are:

    1. Validation interface uses shared pointers only
    2. Fix CValidationInterface and NetEventsInterface to use virtual destructors. Since there is no usage of creation and deletion via base pointer it does not have a problem but instead it's not correct design.
    3. RPC methods uses CWallet shared pointer only
    4. CwalletTx and WalletRescanReserver uses optional reference to CWallet instead of pointer
    5. Notification implementation uses weak pointer instead of shared one.
  89. DrahtBot cross-referenced this on May 3, 2020 from issue [RPC] Include coinbase transactions in receivedby RPCs by andrewtoth
  90. DrahtBot cross-referenced this on May 4, 2020 from issue gui: Drop RecentRequestsTableModel dependency to WalletModel by promag
  91. DrahtBot added the label Needs rebase on May 4, 2020
  92. ryanofsky commented at 1:55 AM on May 7, 2020: contributor

    Interestingly this change seems like a superset of #18742 by @MarcoFalke and #18791 by @promag and #18592 by @brakmic but it precedes all these other prs!

    For the #18742 / #18791 overlap, I think there's a question about where it makes sense to use the shared pointer validationinterface callbacks, and where it makes sense to use the non-shared ones. Maybe it would be good to do what this PR does and use shared pointers everywhere but there are possible concerns about overhead and making shutdown not deterministic. Some discussion #18791 (comment)

    For the #18592 overlap, I think #18592 might be taking a better approach. It's generally good to replace raw pointers with smart pointers or references. But a lot of instances here look like they should be references instead of shared_ptrs, and there's also an Optional<const CWallet&> usage which I think is just recreating a type of a raw pointer. It seems like the pointer changes here might be going too far in some cases.

    Probably we should focus on #18742 and #18791 and #18592 for now, but see if there's anything this PR does better or isn't covered by the smaller prs.

  93. DrahtBot removed the label Needs rebase on May 7, 2020
  94. DrahtBot cross-referenced this on May 7, 2020 from issue [WIP] Serve BIP 157 compact filters by jnewbery
  95. DrahtBot cross-referenced this on May 9, 2020 from issue Replace -Wthread-safety-analysis with broader -Wthread-safety by hebasto
  96. DrahtBot cross-referenced this on May 11, 2020 from issue rpcwallet: Replace boost::optional<T>::emplace with simple assignment of T{} by MarcoFalke
  97. DrahtBot cross-referenced this on May 11, 2020 from issue Drop checkFinalTx and use Median Time Past to check finality of wallet transactions by ariard
  98. DrahtBot added the label Needs rebase on May 13, 2020
  99. bvbfan commented at 3:07 PM on May 15, 2020: contributor

    Revert optional ref. @ryanofsky none of those PRs are complete like this, i agree they have same approach. Using shared pointer is cheap enough to be pass by value.

  100. DrahtBot removed the label Needs rebase on May 15, 2020
  101. DrahtBot cross-referenced this on May 15, 2020 from issue wallet: Minimal fix to restore conflicted transaction notifications by ryanofsky
  102. DrahtBot cross-referenced this on May 15, 2020 from issue wallet: Refactor the classes in wallet/db.{cpp/h} by achow101
  103. DrahtBot cross-referenced this on May 15, 2020 from issue indexes: Add compact block filter headers cache by jnewbery
  104. DrahtBot cross-referenced this on May 16, 2020 from issue RFC: Introducing AltNet, a pluggable framework for alternative transports by ariard
  105. DrahtBot cross-referenced this on May 16, 2020 from issue RFC: Introducing Watchdog, a cross-layer anomaly detection module by ariard
  106. DrahtBot cross-referenced this on May 18, 2020 from issue net processing: Add support for getcfheaders by jnewbery
  107. DrahtBot added the label Needs rebase on May 21, 2020
  108. DrahtBot removed the label Needs rebase on May 22, 2020
  109. DrahtBot added the label Needs rebase on May 23, 2020
  110. DrahtBot removed the label Needs rebase on May 24, 2020
  111. DrahtBot added the label Needs rebase on May 26, 2020
  112. DrahtBot removed the label Needs rebase on May 26, 2020
  113. DrahtBot cross-referenced this on May 27, 2020 from issue wallet: Add sqlite as an alternative wallet database and use it for new descriptor wallets by achow101
  114. DrahtBot cross-referenced this on May 27, 2020 from issue Replace CWallet::Set* functions that use memonly with Add/Load variants by achow101
  115. bvbfan renamed this:
    Protect wallet by using shared pointers
    Use shared pointers only in validation interface
    on May 28, 2020
  116. DrahtBot added the label Needs rebase on May 28, 2020
  117. DrahtBot removed the label Needs rebase on May 28, 2020
  118. DrahtBot cross-referenced this on May 28, 2020 from issue Remove g_rpc_chain global by ryanofsky
  119. DrahtBot cross-referenced this on May 29, 2020 from issue wallet: Introduce and use DummyDatabase instead of dummy BerkeleyDatabase by achow101
  120. DrahtBot cross-referenced this on May 29, 2020 from issue refactor: remove ::vpwallets and related global variables by ryanofsky
  121. DrahtBot cross-referenced this on May 29, 2020 from issue refactor: Combine GetWalletForJSONRPCRequest and EnsureWalletIsAvailable functions by ryanofsky
  122. DrahtBot cross-referenced this on May 29, 2020 from issue refactor: Move wallet methods out of chain.h and node.h by ryanofsky
  123. DrahtBot cross-referenced this on May 29, 2020 from issue test: Remove duplicate NodeContext hacks by ryanofsky
  124. DrahtBot cross-referenced this on May 29, 2020 from issue wallet: Never schedule MaybeCompactWalletDB when -flushwallet is off by MarcoFalke
  125. DrahtBot cross-referenced this on Jun 1, 2020 from issue p2p: Signal support for compact block filters with NODE_COMPACT_FILTERS by jnewbery
  126. DrahtBot cross-referenced this on Jun 2, 2020 from issue wallettool: Add dump and createfromdump commands by achow101
  127. DrahtBot added the label Needs rebase on Jun 2, 2020
  128. DrahtBot removed the label Needs rebase on Jun 4, 2020
  129. DrahtBot cross-referenced this on Jun 5, 2020 from issue wallet: add cached m_is_ibd to remove Chain::isInitialBlockDownload by ariard
  130. DrahtBot added the label Needs rebase on Jun 5, 2020
  131. DrahtBot removed the label Needs rebase on Jun 14, 2020
  132. DrahtBot cross-referenced this on Jun 14, 2020 from issue wallet: Remove first parameter to ScanForWalletTransactions start_hash by pstratem
  133. DrahtBot cross-referenced this on Jun 14, 2020 from issue rpc: remove deprecated getaddressinfo fields by jonatack
  134. DrahtBot cross-referenced this on Jun 15, 2020 from issue util: Add Assert identity function by MarcoFalke
  135. DrahtBot cross-referenced this on Jun 16, 2020 from issue wallet: GetWalletTx and IsMine require cs_wallet lock by promag
  136. DrahtBot cross-referenced this on Jun 17, 2020 from issue wallet: BerkeleyDatabase make BerkeleyDatabase::Create, CreateMock, and CreateDummy non-static functions by achow101
  137. DrahtBot added the label Needs rebase on Jun 18, 2020
  138. DrahtBot removed the label Needs rebase on Jun 20, 2020
  139. DrahtBot cross-referenced this on Jun 20, 2020 from issue validation: re-delegate absurd fee checking from mempool to clients by glozow
  140. DrahtBot cross-referenced this on Jun 21, 2020 from issue Preserve the `LockData` initial state if "potential deadlock detected" exception thrown by hebasto
  141. DrahtBot added the label Needs rebase on Jun 21, 2020
  142. DrahtBot removed the label Needs rebase on Jun 21, 2020
  143. DrahtBot added the label Needs rebase on Jun 24, 2020
  144. DrahtBot removed the label Needs rebase on Jun 28, 2020
  145. DrahtBot cross-referenced this on Jun 28, 2020 from issue refactor: Remove confusing OutputType::CHANGE_AUTO by MarcoFalke
  146. DrahtBot cross-referenced this on Jun 29, 2020 from issue The ultimate send RPC by Sjors
  147. DrahtBot cross-referenced this on Jun 29, 2020 from issue refactor: Remove confusing BlockIndex global by MarcoFalke
  148. DrahtBot added the label Needs rebase on Jul 3, 2020
  149. DrahtBot removed the label Needs rebase on Jul 4, 2020
  150. DrahtBot added the label Needs rebase on Jul 4, 2020
  151. DrahtBot cross-referenced this on Jul 4, 2020 from issue rpc: Add options argument to listtransactions, with paginatebypointer options by kristapsk
  152. DrahtBot removed the label Needs rebase on Jul 4, 2020
  153. DrahtBot cross-referenced this on Jul 5, 2020 from issue [WIP DONOTMERGE] Replace boost with C++17 (std::shared_mutex) by MarcoFalke
  154. DrahtBot cross-referenced this on Jul 5, 2020 from issue Replace boost::filesystem with std::filesystem by kiminuo
  155. DrahtBot added the label Needs rebase on Jul 12, 2020
  156. DrahtBot removed the label Needs rebase on Jul 12, 2020
  157. DrahtBot cross-referenced this on Jul 12, 2020 from issue send* RPCs in the wallet returns the "fee reason" by stackman27
  158. DrahtBot added the label Needs rebase on Jul 14, 2020
  159. DrahtBot removed the label Needs rebase on Jul 14, 2020
  160. DrahtBot cross-referenced this on Jul 14, 2020 from issue refactor: Rename signal TransactionRemovedFromMempool to better describe behavior by instagibbs
  161. DrahtBot cross-referenced this on Jul 15, 2020 from issue Coinstats Index by fjahr
  162. DrahtBot cross-referenced this on Jul 20, 2020 from issue Remove mempool global by MarcoFalke
  163. DrahtBot cross-referenced this on Jul 21, 2020 from issue refactor: Get rid of more redundant chain methods by ryanofsky
  164. DrahtBot cross-referenced this on Jul 23, 2020 from issue ZMQ: Create "sequence" notifier, enabling client-side mempool tracking by instagibbs
  165. DrahtBot cross-referenced this on Jul 29, 2020 from issue Remove wallet.dat path handling from wallet.cpp, rpcwallet.cpp by ryanofsky
  166. DrahtBot cross-referenced this on Jul 30, 2020 from issue Disable fee estimation in blocksonly mode (by removing the fee estimates global) by darosior
  167. DrahtBot added the label Needs rebase on Jul 30, 2020
  168. DrahtBot removed the label Needs rebase on Jul 30, 2020
  169. DrahtBot cross-referenced this on Aug 2, 2020 from issue assumeutxo by jamesob
  170. DrahtBot cross-referenced this on Aug 7, 2020 from issue Run clang-tidy -*,performance-* by Warchant
  171. DrahtBot added the label Needs rebase on Aug 13, 2020
  172. DrahtBot removed the label Needs rebase on Sep 12, 2020
  173. DrahtBot added the label Needs rebase on Sep 15, 2020
  174. DrahtBot removed the label Needs rebase on Sep 15, 2020
  175. DrahtBot added the label Needs rebase on Sep 18, 2020
  176. DrahtBot removed the label Needs rebase on Oct 2, 2020
  177. DrahtBot cross-referenced this on Oct 2, 2020 from issue wallet: Fix wallet loading race during node start by fjahr
  178. DrahtBot cross-referenced this on Oct 2, 2020 from issue wallet: Avoid locking cs_wallet recursively by promag
  179. DrahtBot cross-referenced this on Oct 2, 2020 from issue rpc: Add dumpcoinstats by fjahr
  180. promag commented at 11:01 PM on October 6, 2020: member

    Is this still a bug fix? Do you think you can split in multiple commits?

  181. bvbfan commented at 6:29 AM on October 7, 2020: contributor

    Hi @promag mostly it's not an issue, AFAIK. It has some side effects in Qt gui, it was fixed i think. Notification proxy can extend notification lifetime which isn't correct to me. As well as using shared pointers only to validation interface, missing virtual destructors to interface classes like NetEventsInterface (it's not a problem since it's not deleted through base pointer till now). I can split it to more commits if you're interested in this features.

  182. Use shared pointer to validation interface
    Signed-off-by: Anthony Fieroni <bvbfan@abv.bg>
    9b97239276
  183. Use weak reference to chain notification in validation interface proxy
    Signed-off-by: Anthony Fieroni <bvbfan@abv.bg>
    c45eb76e7a
  184. Make interface classes desctructor virtual
    Signed-off-by: Anthony Fieroni <bvbfan@abv.bg>
    557b59670d
  185. bvbfan commented at 12:30 PM on October 7, 2020: contributor

    Refactor pwallet to wallet (wallet* to wallet shared_ptr) is removed.

  186. DrahtBot cross-referenced this on Oct 15, 2020 from issue tree-wide: De-globalize ChainstateManager by dongcarl
  187. DrahtBot cross-referenced this on Oct 22, 2020 from issue net: Remove g_relay_txes by jnewbery
  188. DrahtBot cross-referenced this on Oct 23, 2020 from issue addrman: Make addrman a top-level component by jnewbery
  189. DrahtBot cross-referenced this on Oct 24, 2020 from issue addrman: Make consistency checks a runtime option by jnewbery
  190. DrahtBot cross-referenced this on Nov 5, 2020 from issue tests: Create or use existing properly initialized NodeContexts by dongcarl
  191. DrahtBot added the label Needs rebase on Dec 1, 2020
  192. DrahtBot commented at 9:44 AM on December 1, 2020: contributor

    <!--cf906140f33d8803c4a75a2196329ecb-->

    🐙 This pull request conflicts with the target branch and needs rebase.

    <sub>Want to unsubscribe from rebase notifications on this pull request? Just convert this pull request to a "draft".</sub>

  193. MarcoFalke commented at 12:01 PM on October 22, 2021: member

    Needs rebase if still relevant

  194. bvbfan commented at 12:19 PM on October 22, 2021: contributor

    I will investigate if it still needed, actually @ryanofsky does excellent work to well define shared interfaces ownership.

  195. DrahtBot commented at 10:49 AM on February 22, 2022: contributor

    <!--13523179cfe9479db18ec6c5d236f789-->There hasn't been much activity lately and the patch still needs rebase. What is the status here?

    • Is it still relevant? ➡️ Please solve the conflicts to make it ready for review and to ensure the CI passes.
    • Is it no longer relevant? ➡️ Please close.
    • Did the author lose interest or time to work on this? ➡️ Please close it and mark it 'Up for grabs' with the label, so that it can be picked up in the future.
  196. MarcoFalke commented at 10:56 AM on February 22, 2022: member

    Closing for now. Feel free to ask for this to be reopened or create a new pull request.

  197. MarcoFalke closed this on Feb 22, 2022

  198. bitcoin locked this on Feb 22, 2023

github-metadata-mirror

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: 2026-05-19 06:54 UTC