aboutsummaryrefslogtreecommitdiff
path: root/test/functional/test_framework/mininode.py
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@protonmail.com>2020-03-31 14:25:04 +0200
committerWladimir J. van der Laan <laanwj@protonmail.com>2020-03-31 15:07:06 +0200
commit9a2b5f22c1f603a6e3abc16dbf074c8d33a8d01f (patch)
tree670aad25a0b3916ae7cc5608c8be2fbff31cdb84 /test/functional/test_framework/mininode.py
parentf2880e21eff2428615ee3024570c4861d3238107 (diff)
parent41b0baf43c243b64b394e774e336475a489cca2b (diff)
downloadbitcoin-9a2b5f22c1f603a6e3abc16dbf074c8d33a8d01f.tar.xz
Merge #18338: Fix wallet unload race condition
41b0baf43c243b64b394e774e336475a489cca2b gui: Handle WalletModel::unload asynchronous (João Barbosa) ab31b9d6fe7b39713682e3f52d11238dbe042c16 Fix wallet unload race condition (Russell Yanofsky) Pull request description: This PR consists in two fixes. The first fixes a concurrency issues with `boost::signals2`. The second fixes a wallet model destruction while it's being used. From boost signal documentation at https://www.boost.org/doc/libs/1_72_0/doc/html/signals2/thread-safety.html: > When a signal is invoked by calling signal::operator(), the invocation first acquires a lock on the signal's mutex. Then it obtains a handle to the signal's slot list and combiner. Next it releases the signal's mutex, before invoking the combiner to iterate through the slot list. This means that `UnregisterValidationInterface` doesn't prevent more calls to that interface. The fix consists in capturing the `shared_ptr<CValidationInterface>` in each internal slot. The GUI bug is fixed by using a `Qt::QueuedConnection` in the `WalletModel::unload` connection. ACKs for top commit: ryanofsky: Code review ACK 41b0baf43c243b64b394e774e336475a489cca2b. Only change is moving assert as suggested hebasto: ACK 41b0baf43c243b64b394e774e336475a489cca2b, tested on Linux Mint 19.3. Tree-SHA512: 4f712d8de65bc1214411831250de5dc0a9fd505fb84da5baf9f2cc4d551bc3abffc061616f00afe43dba7525af2cd96c9b54aeead9383145e3b8801f25d85f50
Diffstat (limited to 'test/functional/test_framework/mininode.py')
0 files changed, 0 insertions, 0 deletions