diff options
author | Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> | 2024-09-13 11:28:16 +0100 |
---|---|---|
committer | Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> | 2024-09-13 11:28:23 +0100 |
commit | e43ce250c6fb65cc0c8903296c8ab228539d2204 (patch) | |
tree | 58fd22ce27de075484d09173dafd4e5d81237711 /test/functional/data/wallets/high_minversion/db.log | |
parent | cf0120ff024aa73a56f2975c832fda6aa8146dfa (diff) | |
parent | a965f2bc07a3588f8c2b8d6a542961562e3f5d0e (diff) |
Merge bitcoin-core/gui#835: Fix crash when closing wallet
a965f2bc07a3588f8c2b8d6a542961562e3f5d0e gui: fix crash when closing wallet (furszy)
Pull request description:
The crash occurs because `WalletController::removeAndDeleteWallet` is called twice for the
same wallet model: first in the GUI's button connected function `WalletController::closeWallet`,
and then again when the backend emits the `WalletModel::unload` signal.
This causes the issue because `removeAndDeleteWallet` inlines an `erase(std::remove())`.
So, if `std::remove` returns an iterator to the end (indicating the element wasn't found
because it was already erased), the subsequent call to `erase` leads to an undefined behavior.
Test Notes:
Try closing any wallet using the toolbar button in the GUI. It will crash in master, but not here.
Fixes https://github.com/bitcoin/bitcoin/issues/30887.
ACKs for top commit:
pablomartin4btc:
tACK a965f2bc07a3588f8c2b8d6a542961562e3f5d0e
jarolrod:
ACK a965f2bc07a3588f8c2b8d6a542961562e3f5d0e
hebasto:
ACK a965f2bc07a3588f8c2b8d6a542961562e3f5d0e.
Tree-SHA512: c94681b95cb566f7aabd0d4fb10f797c2cea6ac569abc265e918f08e6abae3335432a0b0879372b54b2c109798ed0a4a249bf162c34add59cbd18d38a2d9660e
Diffstat (limited to 'test/functional/data/wallets/high_minversion/db.log')
0 files changed, 0 insertions, 0 deletions