Closing a wallet using the fa46088440 28.x QT client segfaults #30887

issue katesalazar opened this issue on September 12, 2024
  1. katesalazar commented at 5:51 PM on September 12, 2024: contributor

    Is there an existing issue for this?

    • I have searched the existing issues

    Current behaviour

    Closing a descriptor wallet using the fa46088440 28.x QT client segfaults. Closing a descriptor wallet using the fa46088440 28.x console client works fine.

    Expected behaviour

    Not a crash.

    Steps to reproduce

    --enable-wallet --disable-shared --with-pic --no-create --no-recursion

    Relevant log output

    standard segfault line

    How did you obtain Bitcoin Core

    Compiled from source

    What version of Bitcoin Core are you using?

    28.x@fa46088440

    Operating system and version

    Debian GNU/Linux 12 (bookworm)

    Machine specifications

    x86_64 GNU/Linux

  2. maflcko commented at 5:57 PM on September 12, 2024: member

    Can you please run in gdb or valgrind or any other tool, so that more information is available?

    Alternatively, what are the full and exact steps to reproduce, including all config/settings/commands, ideally starting from a fresh install of the OS?

  3. maflcko added the label GUI on Sep 12, 2024
  4. katesalazar commented at 6:10 PM on September 12, 2024: contributor
    $ valgrind ./src/qt/bitcoin-qt -datadir=/mnt/sdb1/chains/bitcoin/main/datadir/ -proxy=127.0.0.1:9050 -maxmempool=$((1024 * 5)) -dbcache=$((1024 * 7))
    bash: valgrind: command not found
    $ sudo aptitude install valgrind && valgrind ./src/qt/bitcoin-qt -datadir=/mnt/sdb1/chains/bitcoin/main/datadir/ -proxy=127.0.0.1:9050 -maxmempool=$((1024 * 5)) -dbcache=$((1024 * 7))
    [sudo] password for administrator: 
    The following NEW packages will be installed:
      libc6-dbg{a} valgrind valgrind-dbg{a} 
    The following packages will be upgraded:
      libc-bin libc-dev-bin libc-devtools libc-l10n libc6 libc6-dev locales 
    7 packages upgraded, 3 newly installed, 0 to remove and 126 not upgraded.
    Need to get 95.6 MB of archives. After unpacking 160 MB will be used.
    Do you want to continue? [Y/n/?] Y
    Get: 1 http://deb.debian.org/debian bookworm/main amd64 libc-devtools amd64 2.36-9+deb12u8 [53.9 kB]
    Get: 2 http://deb.debian.org/debian bookworm/main amd64 libc6-dev amd64 2.36-9+deb12u8 [1,900 kB]
    Get: 3 http://deb.debian.org/debian bookworm/main amd64 libc-dev-bin amd64 2.36-9+deb12u8 [46.3 kB]
    Get: 4 http://deb.debian.org/debian bookworm/main amd64 libc6 amd64 2.36-9+deb12u8 [2,754 kB]
    Get: 5 http://deb.debian.org/debian bookworm/main amd64 libc-bin amd64 2.36-9+deb12u8 [608 kB]
    Get: 6 http://deb.debian.org/debian bookworm/main amd64 libc-l10n all 2.36-9+deb12u8 [674 kB]
    Get: 7 http://deb.debian.org/debian bookworm/main amd64 locales all 2.36-9+deb12u8 [3,901 kB]
    Get: 8 http://deb.debian.org/debian bookworm/main amd64 libc6-dbg amd64 2.36-9+deb12u8 [7,376 kB]
    Get: 9 http://deb.debian.org/debian bookworm/main amd64 valgrind amd64 1:3.19.0-1 [14.3 MB]
    Get: 10 http://deb.debian.org/debian bookworm/main amd64 valgrind-dbg amd64 1:3.19.0-1 [64.0 MB]
    Fetched 95.6 MB in 3s (33.1 MB/s)        
    Reading changelogs... Done
    Preconfiguring packages ...
    (Reading database ... 253385 files and directories currently installed.)
    Preparing to unpack .../libc-devtools_2.36-9+deb12u8_amd64.deb ...
    Unpacking libc-devtools (2.36-9+deb12u8) over (2.36-9+deb12u7) ...
    Preparing to unpack .../libc6-dev_2.36-9+deb12u8_amd64.deb ...
    Unpacking libc6-dev:amd64 (2.36-9+deb12u8) over (2.36-9+deb12u7) ...
    Preparing to unpack .../libc-dev-bin_2.36-9+deb12u8_amd64.deb ...
    Unpacking libc-dev-bin (2.36-9+deb12u8) over (2.36-9+deb12u7) ...
    Preparing to unpack .../libc6_2.36-9+deb12u8_amd64.deb ...
    Unpacking libc6:amd64 (2.36-9+deb12u8) over (2.36-9+deb12u7) ...
    Setting up libc6:amd64 (2.36-9+deb12u8) ...
    (Reading database ... 253385 files and directories currently installed.)
    Preparing to unpack .../libc-bin_2.36-9+deb12u8_amd64.deb ...
    Unpacking libc-bin (2.36-9+deb12u8) over (2.36-9+deb12u7) ...
    Setting up libc-bin (2.36-9+deb12u8) ...
    (Reading database ... 253385 files and directories currently installed.)
    Preparing to unpack .../libc-l10n_2.36-9+deb12u8_all.deb ...
    Unpacking libc-l10n (2.36-9+deb12u8) over (2.36-9+deb12u7) ...
    Preparing to unpack .../locales_2.36-9+deb12u8_all.deb ...
    Unpacking locales (2.36-9+deb12u8) over (2.36-9+deb12u7) ...
    Selecting previously unselected package libc6-dbg:amd64.
    Preparing to unpack .../libc6-dbg_2.36-9+deb12u8_amd64.deb ...
    Unpacking libc6-dbg:amd64 (2.36-9+deb12u8) ...
    Selecting previously unselected package valgrind.
    Preparing to unpack .../valgrind_1%3a3.19.0-1_amd64.deb ...
    Unpacking valgrind (1:3.19.0-1) ...
    Selecting previously unselected package valgrind-dbg.
    Preparing to unpack .../valgrind-dbg_1%3a3.19.0-1_amd64.deb ...
    Unpacking valgrind-dbg (1:3.19.0-1) ...
    Setting up libc-l10n (2.36-9+deb12u8) ...
    Setting up locales (2.36-9+deb12u8) ...
    Generating locales (this might take a while)...
      en_US.UTF-8... done
      es_ES.UTF-8... done
    Generation complete.
    Setting up libc6-dbg:amd64 (2.36-9+deb12u8) ...
    Setting up libc-dev-bin (2.36-9+deb12u8) ...
    Setting up valgrind (1:3.19.0-1) ...
    Setting up libc-devtools (2.36-9+deb12u8) ...
    Setting up valgrind-dbg (1:3.19.0-1) ...
    Setting up libc6-dev:amd64 (2.36-9+deb12u8) ...
    Processing triggers for man-db (2.11.2-2) ...
                                             
    Current status: 126 (-7) upgradable.
    ==19611== Memcheck, a memory error detector
    ==19611== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.
    ==19611== Using Valgrind-3.19.0 and LibVEX; rerun with -h for copyright info
    ==19611== Command: ./src/qt/bitcoin-qt -datadir=/mnt/sdb1/chains/bitcoin/main/datadir/ -proxy=127.0.0.1:9050 -maxmempool=5120 -dbcache=7168
    ==19611== 
    ==19611== Invalid read of size 8
    ==19611==    at 0x4023AB4: strncmp (strcmp-sse2.S:162)
    ==19611==    by 0x4004B9E: is_dst (dl-load.c:216)
    ==19611==    by 0x400596E: _dl_dst_count (dl-load.c:253)
    ==19611==    by 0x4005B47: expand_dynamic_string_token (dl-load.c:395)
    ==19611==    by 0x4005CB2: fillin_rpath.isra.0 (dl-load.c:483)
    ==19611==    by 0x4005FA2: decompose_rpath (dl-load.c:654)
    ==19611==    by 0x400815B: _dl_map_object (dl-load.c:2111)
    ==19611==    by 0x4002260: openaux (dl-deps.c:64)
    ==19611==    by 0x63A1FC9: _dl_catch_exception (dl-error-skeleton.c:208)
    ==19611==    by 0x40025C9: _dl_map_object_deps (dl-deps.c:232)
    ==19611==    by 0x400BA6C: dl_open_worker_begin (dl-open.c:592)
    ==19611==    by 0x63A1FC9: _dl_catch_exception (dl-error-skeleton.c:208)
    ==19611==  Address 0x9ae58a9 is 9 bytes inside a block of size 15 alloc'd
    ==19611==    at 0x48407B4: malloc (vg_replace_malloc.c:381)
    ==19611==    by 0x402389A: malloc (rtld-malloc.h:56)
    ==19611==    by 0x402389A: strdup (strdup.c:42)
    ==19611==    by 0x4005F34: decompose_rpath (dl-load.c:629)
    ==19611==    by 0x400815B: _dl_map_object (dl-load.c:2111)
    ==19611==    by 0x4002260: openaux (dl-deps.c:64)
    ==19611==    by 0x63A1FC9: _dl_catch_exception (dl-error-skeleton.c:208)
    ==19611==    by 0x40025C9: _dl_map_object_deps (dl-deps.c:232)
    ==19611==    by 0x400BA6C: dl_open_worker_begin (dl-open.c:592)
    ==19611==    by 0x63A1FC9: _dl_catch_exception (dl-error-skeleton.c:208)
    ==19611==    by 0x400B1C5: dl_open_worker (dl-open.c:782)
    ==19611==    by 0x63A1FC9: _dl_catch_exception (dl-error-skeleton.c:208)
    ==19611==    by 0x400B5B7: _dl_open (dl-open.c:884)
    ==19611== 
    ==19611== Invalid read of size 8
    ==19611==    at 0x4023AB4: strncmp (strcmp-sse2.S:162)
    ==19611==    by 0x4004B9E: is_dst (dl-load.c:216)
    ==19611==    by 0x4005A0D: _dl_dst_substitute (dl-load.c:295)
    ==19611==    by 0x4005CB2: fillin_rpath.isra.0 (dl-load.c:483)
    ==19611==    by 0x4005FA2: decompose_rpath (dl-load.c:654)
    ==19611==    by 0x400815B: _dl_map_object (dl-load.c:2111)
    ==19611==    by 0x4002260: openaux (dl-deps.c:64)
    ==19611==    by 0x63A1FC9: _dl_catch_exception (dl-error-skeleton.c:208)
    ==19611==    by 0x40025C9: _dl_map_object_deps (dl-deps.c:232)
    ==19611==    by 0x400BA6C: dl_open_worker_begin (dl-open.c:592)
    ==19611==    by 0x63A1FC9: _dl_catch_exception (dl-error-skeleton.c:208)
    ==19611==    by 0x400B1C5: dl_open_worker (dl-open.c:782)
    ==19611==  Address 0x9ae58a9 is 9 bytes inside a block of size 15 alloc'd
    ==19611==    at 0x48407B4: malloc (vg_replace_malloc.c:381)
    ==19611==    by 0x402389A: malloc (rtld-malloc.h:56)
    ==19611==    by 0x402389A: strdup (strdup.c:42)
    ==19611==    by 0x4005F34: decompose_rpath (dl-load.c:629)
    ==19611==    by 0x400815B: _dl_map_object (dl-load.c:2111)
    ==19611==    by 0x4002260: openaux (dl-deps.c:64)
    ==19611==    by 0x63A1FC9: _dl_catch_exception (dl-error-skeleton.c:208)
    ==19611==    by 0x40025C9: _dl_map_object_deps (dl-deps.c:232)
    ==19611==    by 0x400BA6C: dl_open_worker_begin (dl-open.c:592)
    ==19611==    by 0x63A1FC9: _dl_catch_exception (dl-error-skeleton.c:208)
    ==19611==    by 0x400B1C5: dl_open_worker (dl-open.c:782)
    ==19611==    by 0x63A1FC9: _dl_catch_exception (dl-error-skeleton.c:208)
    ==19611==    by 0x400B5B7: _dl_open (dl-open.c:884)
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x1B613207: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x1B613207: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x1B878577: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x1B878577: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x1BE0F357: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x1BE0F357: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x225F7597: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x225F7597: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x21E9CAD7: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x21E9CAD7: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x21BF40B7: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x21BF40B7: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x36BC40F7: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x36BC40F7: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x228F5957: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x228F5957: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x22B346E7: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x22B346E7: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x272D8457: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x272D8457: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x278C9BF7: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x278C9BF7: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x9AA47F7: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x9AA47F7: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x2237BD47: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x2237BD47: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x21DE4067: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x21DE4067: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x228A5867: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x228A5867: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x22B23517: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x22B23517: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x4EFCC517: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x4EFCC517: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x270B0707: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x270B0707: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x419E92F7: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x419E92F7: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x1BDED517: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x1BDED517: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x22871427: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x22871427: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x26B89937: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x26B89937: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x18192007: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x18192007: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x26A583E7: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x26A583E7: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x2621A2D7: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x2621A2D7: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x22725477: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x22725477: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x45DCA377: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x45DCA377: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x22355907: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x22355907: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x33592BF7: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x33592BF7: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x2384F1B7: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x2384F1B7: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DCC5: ???
    ==19611==    by 0x2234F387: ???
    ==19611== 
    ==19611== Conditional jump or move depends on uninitialised value(s)
    ==19611==    at 0x2375DBAD: ???
    ==19611==    by 0x2234F387: ???
    ==19611== 
    ==19611== Invalid read of size 8
    ==19611==    at 0x484A345: memmove (vg_replace_strmem.c:1382)
    ==19611==    by 0x341C0A: __copy_m<WalletModel*> (stl_algobase.h:431)
    ==19611==    by 0x341C0A: __copy_move_a2<true, WalletModel**, WalletModel**> (stl_algobase.h:495)
    ==19611==    by 0x341C0A: __copy_move_a1<true, WalletModel**, WalletModel**> (stl_algobase.h:522)
    ==19611==    by 0x341C0A: __copy_move_a<true, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> >, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> > > (stl_algobase.h:529)
    ==19611==    by 0x341C0A: move<__gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> >, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> > > (stl_algobase.h:652)
    ==19611==    by 0x341C0A: _M_erase (vector.tcc:179)
    ==19611==    by 0x341C0A: erase (stl_vector.h:1530)
    ==19611==    by 0x341C0A: WalletController::removeAndDeleteWallet(WalletModel*) (walletcontroller.cpp:180)
    ==19611==    by 0x4CF26EF: QObject::event(QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x50CAFAD: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.8)
    ==19611==    by 0x4CC66F7: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC9680: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4D1F152: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x6B837A8: g_main_context_dispatch (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x6B83A37: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x6B83ACB: g_main_context_iteration (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x4D1E835: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC517A: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==  Address 0x21c979e8 is 0 bytes after a block of size 8 alloc'd
    ==19611==    at 0x4840F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
    ==19611==    by 0x3463C9: allocate (new_allocator.h:137)
    ==19611==    by 0x3463C9: allocate (allocator.h:188)
    ==19611==    by 0x3463C9: allocate (alloc_traits.h:464)
    ==19611==    by 0x3463C9: _M_allocate (stl_vector.h:378)
    ==19611==    by 0x3463C9: _M_allocate (stl_vector.h:375)
    ==19611==    by 0x3463C9: _M_realloc_insert<WalletModel* const&> (vector.tcc:453)
    ==19611==    by 0x3463C9: push_back (stl_vector.h:1287)
    ==19611==    by 0x3463C9: WalletController::getOrCreateWallet(std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >) (walletcontroller.cpp:144)
    ==19611==    by 0x34661F: operator() (walletcontroller.cpp:49)
    ==19611==    by 0x34661F: __invoke_impl<void, WalletController::WalletController(ClientModel&, const PlatformStyle*, QObject*)::<lambda(std::unique_ptr<interfaces::Wallet>)>&, std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> > > (invoke.h:61)
    ==19611==    by 0x34661F: __invoke_r<void, WalletController::WalletController(ClientModel&, const PlatformStyle*, QObject*)::<lambda(std::unique_ptr<interfaces::Wallet>)>&, std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> > > (invoke.h:111)
    ==19611==    by 0x34661F: std::_Function_handler<void (std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >), WalletController::WalletController(ClientModel&, PlatformStyle const*, QObject*)::{lambda(std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >)#1}>::_M_invoke(std::_Any_data const&, std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >&&) (std_function.h:290)
    ==19611==    by 0x8077FE: operator() (std_function.h:591)
    ==19611==    by 0x8077FE: wallet::NotifyWalletLoaded(wallet::WalletContext&, std::shared_ptr<wallet::CWallet> const&) (wallet.cpp:224)
    ==19611==    by 0x82675A: LoadWalletInternal (wallet.cpp:296)
    ==19611==    by 0x82675A: wallet::LoadWallet(wallet::WalletContext&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::optional<bool>, wallet::DatabaseOptions const&, wallet::DatabaseStatus&, bilingual_str&, std::vector<bilingual_str, std::allocator<bilingual_str> >&) (wallet.cpp:378)
    ==19611==    by 0x77A9E2: wallet::(anonymous namespace)::WalletLoaderImpl::loadWallet(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<bilingual_str, std::allocator<bilingual_str> >&) (interfaces.cpp:625)
    ==19611==    by 0x346D6B: operator() (walletcontroller.cpp:357)
    ==19611==    by 0x346D6B: call (qobjectdefs_impl.h:146)
    ==19611==    by 0x346D6B: call<QtPrivate::List<>, void> (qobjectdefs_impl.h:256)
    ==19611==    by 0x346D6B: QtPrivate::QFunctorSlotObject<OpenWalletActivity::open(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda()#1}, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (qobjectdefs_impl.h:443)
    ==19611==    by 0x4CF26EF: QObject::event(QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x50CAFAD: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.8)
    ==19611==    by 0x4CC66F7: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC9680: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4D1F152: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611== 
    ==19611== Invalid read of size 8
    ==19611==    at 0x484A35F: memmove (vg_replace_strmem.c:1382)
    ==19611==    by 0x341C0A: __copy_m<WalletModel*> (stl_algobase.h:431)
    ==19611==    by 0x341C0A: __copy_move_a2<true, WalletModel**, WalletModel**> (stl_algobase.h:495)
    ==19611==    by 0x341C0A: __copy_move_a1<true, WalletModel**, WalletModel**> (stl_algobase.h:522)
    ==19611==    by 0x341C0A: __copy_move_a<true, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> >, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> > > (stl_algobase.h:529)
    ==19611==    by 0x341C0A: move<__gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> >, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> > > (stl_algobase.h:652)
    ==19611==    by 0x341C0A: _M_erase (vector.tcc:179)
    ==19611==    by 0x341C0A: erase (stl_vector.h:1530)
    ==19611==    by 0x341C0A: WalletController::removeAndDeleteWallet(WalletModel*) (walletcontroller.cpp:180)
    ==19611==    by 0x4CF26EF: QObject::event(QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x50CAFAD: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.8)
    ==19611==    by 0x4CC66F7: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC9680: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4D1F152: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x6B837A8: g_main_context_dispatch (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x6B83A37: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x6B83ACB: g_main_context_iteration (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x4D1E835: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC517A: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==  Address 0x21c979f0 is 8 bytes after a block of size 8 alloc'd
    ==19611==    at 0x4840F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
    ==19611==    by 0x3463C9: allocate (new_allocator.h:137)
    ==19611==    by 0x3463C9: allocate (allocator.h:188)
    ==19611==    by 0x3463C9: allocate (alloc_traits.h:464)
    ==19611==    by 0x3463C9: _M_allocate (stl_vector.h:378)
    ==19611==    by 0x3463C9: _M_allocate (stl_vector.h:375)
    ==19611==    by 0x3463C9: _M_realloc_insert<WalletModel* const&> (vector.tcc:453)
    ==19611==    by 0x3463C9: push_back (stl_vector.h:1287)
    ==19611==    by 0x3463C9: WalletController::getOrCreateWallet(std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >) (walletcontroller.cpp:144)
    ==19611==    by 0x34661F: operator() (walletcontroller.cpp:49)
    ==19611==    by 0x34661F: __invoke_impl<void, WalletController::WalletController(ClientModel&, const PlatformStyle*, QObject*)::<lambda(std::unique_ptr<interfaces::Wallet>)>&, std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> > > (invoke.h:61)
    ==19611==    by 0x34661F: __invoke_r<void, WalletController::WalletController(ClientModel&, const PlatformStyle*, QObject*)::<lambda(std::unique_ptr<interfaces::Wallet>)>&, std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> > > (invoke.h:111)
    ==19611==    by 0x34661F: std::_Function_handler<void (std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >), WalletController::WalletController(ClientModel&, PlatformStyle const*, QObject*)::{lambda(std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >)#1}>::_M_invoke(std::_Any_data const&, std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >&&) (std_function.h:290)
    ==19611==    by 0x8077FE: operator() (std_function.h:591)
    ==19611==    by 0x8077FE: wallet::NotifyWalletLoaded(wallet::WalletContext&, std::shared_ptr<wallet::CWallet> const&) (wallet.cpp:224)
    ==19611==    by 0x82675A: LoadWalletInternal (wallet.cpp:296)
    ==19611==    by 0x82675A: wallet::LoadWallet(wallet::WalletContext&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::optional<bool>, wallet::DatabaseOptions const&, wallet::DatabaseStatus&, bilingual_str&, std::vector<bilingual_str, std::allocator<bilingual_str> >&) (wallet.cpp:378)
    ==19611==    by 0x77A9E2: wallet::(anonymous namespace)::WalletLoaderImpl::loadWallet(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<bilingual_str, std::allocator<bilingual_str> >&) (interfaces.cpp:625)
    ==19611==    by 0x346D6B: operator() (walletcontroller.cpp:357)
    ==19611==    by 0x346D6B: call (qobjectdefs_impl.h:146)
    ==19611==    by 0x346D6B: call<QtPrivate::List<>, void> (qobjectdefs_impl.h:256)
    ==19611==    by 0x346D6B: QtPrivate::QFunctorSlotObject<OpenWalletActivity::open(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda()#1}, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (qobjectdefs_impl.h:443)
    ==19611==    by 0x4CF26EF: QObject::event(QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x50CAFAD: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.8)
    ==19611==    by 0x4CC66F7: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC9680: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4D1F152: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611== 
    ==19611== Invalid write of size 8
    ==19611==    at 0x484A363: memmove (vg_replace_strmem.c:1382)
    ==19611==    by 0x341C0A: __copy_m<WalletModel*> (stl_algobase.h:431)
    ==19611==    by 0x341C0A: __copy_move_a2<true, WalletModel**, WalletModel**> (stl_algobase.h:495)
    ==19611==    by 0x341C0A: __copy_move_a1<true, WalletModel**, WalletModel**> (stl_algobase.h:522)
    ==19611==    by 0x341C0A: __copy_move_a<true, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> >, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> > > (stl_algobase.h:529)
    ==19611==    by 0x341C0A: move<__gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> >, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> > > (stl_algobase.h:652)
    ==19611==    by 0x341C0A: _M_erase (vector.tcc:179)
    ==19611==    by 0x341C0A: erase (stl_vector.h:1530)
    ==19611==    by 0x341C0A: WalletController::removeAndDeleteWallet(WalletModel*) (walletcontroller.cpp:180)
    ==19611==    by 0x4CF26EF: QObject::event(QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x50CAFAD: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.8)
    ==19611==    by 0x4CC66F7: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC9680: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4D1F152: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x6B837A8: g_main_context_dispatch (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x6B83A37: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x6B83ACB: g_main_context_iteration (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x4D1E835: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC517A: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==  Address 0x21c979e8 is 0 bytes after a block of size 8 alloc'd
    ==19611==    at 0x4840F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
    ==19611==    by 0x3463C9: allocate (new_allocator.h:137)
    ==19611==    by 0x3463C9: allocate (allocator.h:188)
    ==19611==    by 0x3463C9: allocate (alloc_traits.h:464)
    ==19611==    by 0x3463C9: _M_allocate (stl_vector.h:378)
    ==19611==    by 0x3463C9: _M_allocate (stl_vector.h:375)
    ==19611==    by 0x3463C9: _M_realloc_insert<WalletModel* const&> (vector.tcc:453)
    ==19611==    by 0x3463C9: push_back (stl_vector.h:1287)
    ==19611==    by 0x3463C9: WalletController::getOrCreateWallet(std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >) (walletcontroller.cpp:144)
    ==19611==    by 0x34661F: operator() (walletcontroller.cpp:49)
    ==19611==    by 0x34661F: __invoke_impl<void, WalletController::WalletController(ClientModel&, const PlatformStyle*, QObject*)::<lambda(std::unique_ptr<interfaces::Wallet>)>&, std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> > > (invoke.h:61)
    ==19611==    by 0x34661F: __invoke_r<void, WalletController::WalletController(ClientModel&, const PlatformStyle*, QObject*)::<lambda(std::unique_ptr<interfaces::Wallet>)>&, std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> > > (invoke.h:111)
    ==19611==    by 0x34661F: std::_Function_handler<void (std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >), WalletController::WalletController(ClientModel&, PlatformStyle const*, QObject*)::{lambda(std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >)#1}>::_M_invoke(std::_Any_data const&, std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >&&) (std_function.h:290)
    ==19611==    by 0x8077FE: operator() (std_function.h:591)
    ==19611==    by 0x8077FE: wallet::NotifyWalletLoaded(wallet::WalletContext&, std::shared_ptr<wallet::CWallet> const&) (wallet.cpp:224)
    ==19611==    by 0x82675A: LoadWalletInternal (wallet.cpp:296)
    ==19611==    by 0x82675A: wallet::LoadWallet(wallet::WalletContext&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::optional<bool>, wallet::DatabaseOptions const&, wallet::DatabaseStatus&, bilingual_str&, std::vector<bilingual_str, std::allocator<bilingual_str> >&) (wallet.cpp:378)
    ==19611==    by 0x77A9E2: wallet::(anonymous namespace)::WalletLoaderImpl::loadWallet(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<bilingual_str, std::allocator<bilingual_str> >&) (interfaces.cpp:625)
    ==19611==    by 0x346D6B: operator() (walletcontroller.cpp:357)
    ==19611==    by 0x346D6B: call (qobjectdefs_impl.h:146)
    ==19611==    by 0x346D6B: call<QtPrivate::List<>, void> (qobjectdefs_impl.h:256)
    ==19611==    by 0x346D6B: QtPrivate::QFunctorSlotObject<OpenWalletActivity::open(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda()#1}, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (qobjectdefs_impl.h:443)
    ==19611==    by 0x4CF26EF: QObject::event(QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x50CAFAD: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.8)
    ==19611==    by 0x4CC66F7: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC9680: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4D1F152: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611== 
    ==19611== Invalid read of size 8
    ==19611==    at 0x484A367: memmove (vg_replace_strmem.c:1382)
    ==19611==    by 0x341C0A: __copy_m<WalletModel*> (stl_algobase.h:431)
    ==19611==    by 0x341C0A: __copy_move_a2<true, WalletModel**, WalletModel**> (stl_algobase.h:495)
    ==19611==    by 0x341C0A: __copy_move_a1<true, WalletModel**, WalletModel**> (stl_algobase.h:522)
    ==19611==    by 0x341C0A: __copy_move_a<true, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> >, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> > > (stl_algobase.h:529)
    ==19611==    by 0x341C0A: move<__gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> >, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> > > (stl_algobase.h:652)
    ==19611==    by 0x341C0A: _M_erase (vector.tcc:179)
    ==19611==    by 0x341C0A: erase (stl_vector.h:1530)
    ==19611==    by 0x341C0A: WalletController::removeAndDeleteWallet(WalletModel*) (walletcontroller.cpp:180)
    ==19611==    by 0x4CF26EF: QObject::event(QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x50CAFAD: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.8)
    ==19611==    by 0x4CC66F7: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC9680: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4D1F152: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x6B837A8: g_main_context_dispatch (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x6B83A37: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x6B83ACB: g_main_context_iteration (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x4D1E835: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC517A: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==  Address 0x21c979f8 is 16 bytes after a block of size 8 alloc'd
    ==19611==    at 0x4840F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
    ==19611==    by 0x3463C9: allocate (new_allocator.h:137)
    ==19611==    by 0x3463C9: allocate (allocator.h:188)
    ==19611==    by 0x3463C9: allocate (alloc_traits.h:464)
    ==19611==    by 0x3463C9: _M_allocate (stl_vector.h:378)
    ==19611==    by 0x3463C9: _M_allocate (stl_vector.h:375)
    ==19611==    by 0x3463C9: _M_realloc_insert<WalletModel* const&> (vector.tcc:453)
    ==19611==    by 0x3463C9: push_back (stl_vector.h:1287)
    ==19611==    by 0x3463C9: WalletController::getOrCreateWallet(std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >) (walletcontroller.cpp:144)
    ==19611==    by 0x34661F: operator() (walletcontroller.cpp:49)
    ==19611==    by 0x34661F: __invoke_impl<void, WalletController::WalletController(ClientModel&, const PlatformStyle*, QObject*)::<lambda(std::unique_ptr<interfaces::Wallet>)>&, std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> > > (invoke.h:61)
    ==19611==    by 0x34661F: __invoke_r<void, WalletController::WalletController(ClientModel&, const PlatformStyle*, QObject*)::<lambda(std::unique_ptr<interfaces::Wallet>)>&, std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> > > (invoke.h:111)
    ==19611==    by 0x34661F: std::_Function_handler<void (std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >), WalletController::WalletController(ClientModel&, PlatformStyle const*, QObject*)::{lambda(std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >)#1}>::_M_invoke(std::_Any_data const&, std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >&&) (std_function.h:290)
    ==19611==    by 0x8077FE: operator() (std_function.h:591)
    ==19611==    by 0x8077FE: wallet::NotifyWalletLoaded(wallet::WalletContext&, std::shared_ptr<wallet::CWallet> const&) (wallet.cpp:224)
    ==19611==    by 0x82675A: LoadWalletInternal (wallet.cpp:296)
    ==19611==    by 0x82675A: wallet::LoadWallet(wallet::WalletContext&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::optional<bool>, wallet::DatabaseOptions const&, wallet::DatabaseStatus&, bilingual_str&, std::vector<bilingual_str, std::allocator<bilingual_str> >&) (wallet.cpp:378)
    ==19611==    by 0x77A9E2: wallet::(anonymous namespace)::WalletLoaderImpl::loadWallet(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<bilingual_str, std::allocator<bilingual_str> >&) (interfaces.cpp:625)
    ==19611==    by 0x346D6B: operator() (walletcontroller.cpp:357)
    ==19611==    by 0x346D6B: call (qobjectdefs_impl.h:146)
    ==19611==    by 0x346D6B: call<QtPrivate::List<>, void> (qobjectdefs_impl.h:256)
    ==19611==    by 0x346D6B: QtPrivate::QFunctorSlotObject<OpenWalletActivity::open(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda()#1}, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (qobjectdefs_impl.h:443)
    ==19611==    by 0x4CF26EF: QObject::event(QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x50CAFAD: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.8)
    ==19611==    by 0x4CC66F7: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC9680: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4D1F152: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611== 
    ==19611== Invalid write of size 8
    ==19611==    at 0x484A36B: memmove (vg_replace_strmem.c:1382)
    ==19611==    by 0x341C0A: __copy_m<WalletModel*> (stl_algobase.h:431)
    ==19611==    by 0x341C0A: __copy_move_a2<true, WalletModel**, WalletModel**> (stl_algobase.h:495)
    ==19611==    by 0x341C0A: __copy_move_a1<true, WalletModel**, WalletModel**> (stl_algobase.h:522)
    ==19611==    by 0x341C0A: __copy_move_a<true, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> >, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> > > (stl_algobase.h:529)
    ==19611==    by 0x341C0A: move<__gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> >, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> > > (stl_algobase.h:652)
    ==19611==    by 0x341C0A: _M_erase (vector.tcc:179)
    ==19611==    by 0x341C0A: erase (stl_vector.h:1530)
    ==19611==    by 0x341C0A: WalletController::removeAndDeleteWallet(WalletModel*) (walletcontroller.cpp:180)
    ==19611==    by 0x4CF26EF: QObject::event(QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x50CAFAD: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.8)
    ==19611==    by 0x4CC66F7: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC9680: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4D1F152: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x6B837A8: g_main_context_dispatch (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x6B83A37: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x6B83ACB: g_main_context_iteration (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x4D1E835: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC517A: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==  Address 0x21c979f0 is 8 bytes after a block of size 8 alloc'd
    ==19611==    at 0x4840F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
    ==19611==    by 0x3463C9: allocate (new_allocator.h:137)
    ==19611==    by 0x3463C9: allocate (allocator.h:188)
    ==19611==    by 0x3463C9: allocate (alloc_traits.h:464)
    ==19611==    by 0x3463C9: _M_allocate (stl_vector.h:378)
    ==19611==    by 0x3463C9: _M_allocate (stl_vector.h:375)
    ==19611==    by 0x3463C9: _M_realloc_insert<WalletModel* const&> (vector.tcc:453)
    ==19611==    by 0x3463C9: push_back (stl_vector.h:1287)
    ==19611==    by 0x3463C9: WalletController::getOrCreateWallet(std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >) (walletcontroller.cpp:144)
    ==19611==    by 0x34661F: operator() (walletcontroller.cpp:49)
    ==19611==    by 0x34661F: __invoke_impl<void, WalletController::WalletController(ClientModel&, const PlatformStyle*, QObject*)::<lambda(std::unique_ptr<interfaces::Wallet>)>&, std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> > > (invoke.h:61)
    ==19611==    by 0x34661F: __invoke_r<void, WalletController::WalletController(ClientModel&, const PlatformStyle*, QObject*)::<lambda(std::unique_ptr<interfaces::Wallet>)>&, std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> > > (invoke.h:111)
    ==19611==    by 0x34661F: std::_Function_handler<void (std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >), WalletController::WalletController(ClientModel&, PlatformStyle const*, QObject*)::{lambda(std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >)#1}>::_M_invoke(std::_Any_data const&, std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >&&) (std_function.h:290)
    ==19611==    by 0x8077FE: operator() (std_function.h:591)
    ==19611==    by 0x8077FE: wallet::NotifyWalletLoaded(wallet::WalletContext&, std::shared_ptr<wallet::CWallet> const&) (wallet.cpp:224)
    ==19611==    by 0x82675A: LoadWalletInternal (wallet.cpp:296)
    ==19611==    by 0x82675A: wallet::LoadWallet(wallet::WalletContext&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::optional<bool>, wallet::DatabaseOptions const&, wallet::DatabaseStatus&, bilingual_str&, std::vector<bilingual_str, std::allocator<bilingual_str> >&) (wallet.cpp:378)
    ==19611==    by 0x77A9E2: wallet::(anonymous namespace)::WalletLoaderImpl::loadWallet(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<bilingual_str, std::allocator<bilingual_str> >&) (interfaces.cpp:625)
    ==19611==    by 0x346D6B: operator() (walletcontroller.cpp:357)
    ==19611==    by 0x346D6B: call (qobjectdefs_impl.h:146)
    ==19611==    by 0x346D6B: call<QtPrivate::List<>, void> (qobjectdefs_impl.h:256)
    ==19611==    by 0x346D6B: QtPrivate::QFunctorSlotObject<OpenWalletActivity::open(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda()#1}, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (qobjectdefs_impl.h:443)
    ==19611==    by 0x4CF26EF: QObject::event(QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x50CAFAD: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.8)
    ==19611==    by 0x4CC66F7: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC9680: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4D1F152: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611== 
    ==19611== Invalid read of size 8
    ==19611==    at 0x484A36F: memmove (vg_replace_strmem.c:1382)
    ==19611==    by 0x341C0A: __copy_m<WalletModel*> (stl_algobase.h:431)
    ==19611==    by 0x341C0A: __copy_move_a2<true, WalletModel**, WalletModel**> (stl_algobase.h:495)
    ==19611==    by 0x341C0A: __copy_move_a1<true, WalletModel**, WalletModel**> (stl_algobase.h:522)
    ==19611==    by 0x341C0A: __copy_move_a<true, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> >, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> > > (stl_algobase.h:529)
    ==19611==    by 0x341C0A: move<__gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> >, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> > > (stl_algobase.h:652)
    ==19611==    by 0x341C0A: _M_erase (vector.tcc:179)
    ==19611==    by 0x341C0A: erase (stl_vector.h:1530)
    ==19611==    by 0x341C0A: WalletController::removeAndDeleteWallet(WalletModel*) (walletcontroller.cpp:180)
    ==19611==    by 0x4CF26EF: QObject::event(QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x50CAFAD: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.8)
    ==19611==    by 0x4CC66F7: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC9680: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4D1F152: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x6B837A8: g_main_context_dispatch (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x6B83A37: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x6B83ACB: g_main_context_iteration (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x4D1E835: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC517A: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==  Address 0x21c97a00 is 16 bytes after a block of size 16 in arena "client"
    ==19611== 
    ==19611== Invalid write of size 8
    ==19611==    at 0x484A373: memmove (vg_replace_strmem.c:1382)
    ==19611==    by 0x341C0A: __copy_m<WalletModel*> (stl_algobase.h:431)
    ==19611==    by 0x341C0A: __copy_move_a2<true, WalletModel**, WalletModel**> (stl_algobase.h:495)
    ==19611==    by 0x341C0A: __copy_move_a1<true, WalletModel**, WalletModel**> (stl_algobase.h:522)
    ==19611==    by 0x341C0A: __copy_move_a<true, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> >, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> > > (stl_algobase.h:529)
    ==19611==    by 0x341C0A: move<__gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> >, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> > > (stl_algobase.h:652)
    ==19611==    by 0x341C0A: _M_erase (vector.tcc:179)
    ==19611==    by 0x341C0A: erase (stl_vector.h:1530)
    ==19611==    by 0x341C0A: WalletController::removeAndDeleteWallet(WalletModel*) (walletcontroller.cpp:180)
    ==19611==    by 0x4CF26EF: QObject::event(QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x50CAFAD: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.8)
    ==19611==    by 0x4CC66F7: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC9680: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4D1F152: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x6B837A8: g_main_context_dispatch (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x6B83A37: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x6B83ACB: g_main_context_iteration (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x4D1E835: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC517A: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==  Address 0x21c979f8 is 16 bytes after a block of size 8 alloc'd
    ==19611==    at 0x4840F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
    ==19611==    by 0x3463C9: allocate (new_allocator.h:137)
    ==19611==    by 0x3463C9: allocate (allocator.h:188)
    ==19611==    by 0x3463C9: allocate (alloc_traits.h:464)
    ==19611==    by 0x3463C9: _M_allocate (stl_vector.h:378)
    ==19611==    by 0x3463C9: _M_allocate (stl_vector.h:375)
    ==19611==    by 0x3463C9: _M_realloc_insert<WalletModel* const&> (vector.tcc:453)
    ==19611==    by 0x3463C9: push_back (stl_vector.h:1287)
    ==19611==    by 0x3463C9: WalletController::getOrCreateWallet(std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >) (walletcontroller.cpp:144)
    ==19611==    by 0x34661F: operator() (walletcontroller.cpp:49)
    ==19611==    by 0x34661F: __invoke_impl<void, WalletController::WalletController(ClientModel&, const PlatformStyle*, QObject*)::<lambda(std::unique_ptr<interfaces::Wallet>)>&, std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> > > (invoke.h:61)
    ==19611==    by 0x34661F: __invoke_r<void, WalletController::WalletController(ClientModel&, const PlatformStyle*, QObject*)::<lambda(std::unique_ptr<interfaces::Wallet>)>&, std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> > > (invoke.h:111)
    ==19611==    by 0x34661F: std::_Function_handler<void (std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >), WalletController::WalletController(ClientModel&, PlatformStyle const*, QObject*)::{lambda(std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >)#1}>::_M_invoke(std::_Any_data const&, std::unique_ptr<interfaces::Wallet, std::default_delete<interfaces::Wallet> >&&) (std_function.h:290)
    ==19611==    by 0x8077FE: operator() (std_function.h:591)
    ==19611==    by 0x8077FE: wallet::NotifyWalletLoaded(wallet::WalletContext&, std::shared_ptr<wallet::CWallet> const&) (wallet.cpp:224)
    ==19611==    by 0x82675A: LoadWalletInternal (wallet.cpp:296)
    ==19611==    by 0x82675A: wallet::LoadWallet(wallet::WalletContext&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::optional<bool>, wallet::DatabaseOptions const&, wallet::DatabaseStatus&, bilingual_str&, std::vector<bilingual_str, std::allocator<bilingual_str> >&) (wallet.cpp:378)
    ==19611==    by 0x77A9E2: wallet::(anonymous namespace)::WalletLoaderImpl::loadWallet(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<bilingual_str, std::allocator<bilingual_str> >&) (interfaces.cpp:625)
    ==19611==    by 0x346D6B: operator() (walletcontroller.cpp:357)
    ==19611==    by 0x346D6B: call (qobjectdefs_impl.h:146)
    ==19611==    by 0x346D6B: call<QtPrivate::List<>, void> (qobjectdefs_impl.h:256)
    ==19611==    by 0x346D6B: QtPrivate::QFunctorSlotObject<OpenWalletActivity::open(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda()#1}, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (qobjectdefs_impl.h:443)
    ==19611==    by 0x4CF26EF: QObject::event(QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x50CAFAD: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.8)
    ==19611==    by 0x4CC66F7: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC9680: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4D1F152: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611== 
    ==19611== Invalid read of size 8
    ==19611==    at 0x484A354: memmove (vg_replace_strmem.c:1382)
    ==19611==    by 0x341C0A: __copy_m<WalletModel*> (stl_algobase.h:431)
    ==19611==    by 0x341C0A: __copy_move_a2<true, WalletModel**, WalletModel**> (stl_algobase.h:495)
    ==19611==    by 0x341C0A: __copy_move_a1<true, WalletModel**, WalletModel**> (stl_algobase.h:522)
    ==19611==    by 0x341C0A: __copy_move_a<true, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> >, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> > > (stl_algobase.h:529)
    ==19611==    by 0x341C0A: move<__gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> >, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> > > (stl_algobase.h:652)
    ==19611==    by 0x341C0A: _M_erase (vector.tcc:179)
    ==19611==    by 0x341C0A: erase (stl_vector.h:1530)
    ==19611==    by 0x341C0A: WalletController::removeAndDeleteWallet(WalletModel*) (walletcontroller.cpp:180)
    ==19611==    by 0x4CF26EF: QObject::event(QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x50CAFAD: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.8)
    ==19611==    by 0x4CC66F7: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC9680: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4D1F152: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x6B837A8: g_main_context_dispatch (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x6B83A37: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x6B83ACB: g_main_context_iteration (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x4D1E835: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC517A: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==  Address 0x21c97a08 is 24 bytes after a block of size 16 in arena "client"
    ==19611== 
    ==19611== Invalid write of size 8
    ==19611==    at 0x484A35B: memmove (vg_replace_strmem.c:1382)
    ==19611==    by 0x341C0A: __copy_m<WalletModel*> (stl_algobase.h:431)
    ==19611==    by 0x341C0A: __copy_move_a2<true, WalletModel**, WalletModel**> (stl_algobase.h:495)
    ==19611==    by 0x341C0A: __copy_move_a1<true, WalletModel**, WalletModel**> (stl_algobase.h:522)
    ==19611==    by 0x341C0A: __copy_move_a<true, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> >, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> > > (stl_algobase.h:529)
    ==19611==    by 0x341C0A: move<__gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> >, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> > > (stl_algobase.h:652)
    ==19611==    by 0x341C0A: _M_erase (vector.tcc:179)
    ==19611==    by 0x341C0A: erase (stl_vector.h:1530)
    ==19611==    by 0x341C0A: WalletController::removeAndDeleteWallet(WalletModel*) (walletcontroller.cpp:180)
    ==19611==    by 0x4CF26EF: QObject::event(QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x50CAFAD: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.8)
    ==19611==    by 0x4CC66F7: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC9680: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4D1F152: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x6B837A8: g_main_context_dispatch (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x6B83A37: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x6B83ACB: g_main_context_iteration (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x4D1E835: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC517A: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==  Address 0x21c97a00 is 16 bytes after a block of size 16 in arena "client"
    ==19611== 
    ==19611== 
    ==19611== Process terminating with default action of signal 11 (SIGSEGV)
    ==19611==  Bad permissions for mapped region at address 0x22C1A000
    ==19611==    at 0x484A35B: memmove (vg_replace_strmem.c:1382)
    ==19611==    by 0x341C0A: __copy_m<WalletModel*> (stl_algobase.h:431)
    ==19611==    by 0x341C0A: __copy_move_a2<true, WalletModel**, WalletModel**> (stl_algobase.h:495)
    ==19611==    by 0x341C0A: __copy_move_a1<true, WalletModel**, WalletModel**> (stl_algobase.h:522)
    ==19611==    by 0x341C0A: __copy_move_a<true, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> >, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> > > (stl_algobase.h:529)
    ==19611==    by 0x341C0A: move<__gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> >, __gnu_cxx::__normal_iterator<WalletModel**, std::vector<WalletModel*> > > (stl_algobase.h:652)
    ==19611==    by 0x341C0A: _M_erase (vector.tcc:179)
    ==19611==    by 0x341C0A: erase (stl_vector.h:1530)
    ==19611==    by 0x341C0A: WalletController::removeAndDeleteWallet(WalletModel*) (walletcontroller.cpp:180)
    ==19611==    by 0x4CF26EF: QObject::event(QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x50CAFAD: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.8)
    ==19611==    by 0x4CC66F7: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC9680: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4D1F152: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x6B837A8: g_main_context_dispatch (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x6B83A37: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x6B83ACB: g_main_context_iteration (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7400.6)
    ==19611==    by 0x4D1E835: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611==    by 0x4CC517A: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.8)
    ==19611== 
    ==19611== HEAP SUMMARY:
    ==19611==     in use at exit: 272,716,226 bytes in 1,222,612 blocks
    ==19611==   total heap usage: 8,635,023 allocs, 7,412,411 frees, 3,337,225,499 bytes allocated
    ==19611== 
    ==19611== LEAK SUMMARY:
    ==19611==    definitely lost: 862,500 bytes in 16,956 blocks
    ==19611==    indirectly lost: 547,976 bytes in 13,916 blocks
    ==19611==      possibly lost: 2,475,686 bytes in 10,724 blocks
    ==19611==    still reachable: 268,830,064 bytes in 1,181,016 blocks
    ==19611==                       of which reachable via heuristic:
    ==19611==                         newarray           : 520 bytes in 10 blocks
    ==19611==                         multipleinheritance: 8,080 bytes in 8 blocks
    ==19611==         suppressed: 0 bytes in 0 blocks
    ==19611== Rerun with --leak-check=full to see details of leaked memory
    ==19611== 
    ==19611== Use --track-origins=yes to see where uninitialised values come from
    ==19611== For lists of detected and suppressed errors, rerun with: -s
    ==19611== ERROR SUMMARY: 1832917 errors from 73 contexts (suppressed: 0 from 0)
    Segmentation fault (core dumped)
    $ 
    
    
    
  5. maflcko commented at 6:31 PM on September 12, 2024: member

    Looks like this may have been changed recently in https://github.com/bitcoin-core/gui/commit/e682e7db7e399ce888e492eab8f99c389aae05b5. However, I do not know if that change is related.

  6. hebasto added the label Wallet on Sep 12, 2024
  7. katesalazar commented at 9:03 PM on September 12, 2024: contributor

    In my environment, 5d15485a is a crashing rev and inmediate ancestor 1a41e635 is a non-crashing rev.

  8. katesalazar commented at 9:11 PM on September 12, 2024: contributor

    I came back to fa46088440, then reverted 5d15485a on top, looks like healed.

  9. furszy commented at 9:19 PM on September 12, 2024: member

    Replicated. It happens closing it through the GUI toolbar button. Not the command-line. Will investigate it.

  10. furszy commented at 9:35 PM on September 12, 2024: member

    The issue arises because we are calling removeAndDeleteWallet twice for the same wallet model. The first time inside WalletController::closeWallet and a second time when the backend emits the wallet unload signal. Preparing the PR..

  11. maflcko added this to the milestone 28.0 on Sep 12, 2024
  12. maflcko added the label Bug on Sep 12, 2024
  13. furszy commented at 10:02 PM on September 12, 2024: member
  14. hebasto closed this on Sep 13, 2024

  15. hebasto referenced this in commit e43ce250c6 on Sep 13, 2024
  16. bitcoin locked this on Sep 13, 2025

Milestone
28.0


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-02 18:13 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me