[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 2/2] migration/multifd: Do error_free after migrate_set_error
From: |
Juan Quintela |
Subject: |
Re: [PATCH 2/2] migration/multifd: Do error_free after migrate_set_error to avoid memleaks |
Date: |
Wed, 06 May 2020 10:43:01 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) |
Pan Nengyuan <address@hidden> wrote:
> When error happen in multifd_send_thread, it use error_copy to set migrate
> error in
> multifd_send_terminate_threads(). We should call error_free after it.
>
> Similarly, fix another two places in multifd_recv_thread/multifd_save_cleanup.
>
> The leak stack:
> Direct leak of 48 byte(s) in 1 object(s) allocated from:
> #0 0x7f781af07cf0 in calloc (/lib64/libasan.so.5+0xefcf0)
> #1 0x7f781a2ce22d in g_malloc0 (/lib64/libglib-2.0.so.0+0x5322d)
> #2 0x55ee1d075c17 in error_setv /mnt/sdb/backup/qemu/util/error.c:61
> #3 0x55ee1d076464 in error_setg_errno_internal
> /mnt/sdb/backup/qemu/util/error.c:109
> #4 0x55ee1cef066e in qio_channel_socket_writev
> /mnt/sdb/backup/qemu/io/channel-socket.c:569
> #5 0x55ee1cee806b in qio_channel_writev
> /mnt/sdb/backup/qemu/io/channel.c:207
> #6 0x55ee1cee806b in qio_channel_writev_all
> /mnt/sdb/backup/qemu/io/channel.c:171
> #7 0x55ee1cee8248 in qio_channel_write_all
> /mnt/sdb/backup/qemu/io/channel.c:257
> #8 0x55ee1ca12c9a in multifd_send_thread
> /mnt/sdb/backup/qemu/migration/multifd.c:657
> #9 0x55ee1d0607fc in qemu_thread_start
> /mnt/sdb/backup/qemu/util/qemu-thread-posix.c:519
> #10 0x7f78159ae2dd in start_thread (/lib64/libpthread.so.0+0x82dd)
> #11 0x7f78156df4b2 in __GI___clone (/lib64/libc.so.6+0xfc4b2)
>
> Indirect leak of 52 byte(s) in 1 object(s) allocated from:
> #0 0x7f781af07f28 in __interceptor_realloc (/lib64/libasan.so.5+0xeff28)
> #1 0x7f78156f07d9 in __GI___vasprintf_chk (/lib64/libc.so.6+0x10d7d9)
> #2 0x7f781a30ea6c in g_vasprintf (/lib64/libglib-2.0.so.0+0x93a6c)
> #3 0x7f781a2e7cd0 in g_strdup_vprintf (/lib64/libglib-2.0.so.0+0x6ccd0)
> #4 0x7f781a2e7d8c in g_strdup_printf (/lib64/libglib-2.0.so.0+0x6cd8c)
> #5 0x55ee1d075c86 in error_setv /mnt/sdb/backup/qemu/util/error.c:65
> #6 0x55ee1d076464 in error_setg_errno_internal
> /mnt/sdb/backup/qemu/util/error.c:109
> #7 0x55ee1cef066e in qio_channel_socket_writev
> /mnt/sdb/backup/qemu/io/channel-socket.c:569
> #8 0x55ee1cee806b in qio_channel_writev
> /mnt/sdb/backup/qemu/io/channel.c:207
> #9 0x55ee1cee806b in qio_channel_writev_all
> /mnt/sdb/backup/qemu/io/channel.c:171
> #10 0x55ee1cee8248 in qio_channel_write_all
> /mnt/sdb/backup/qemu/io/channel.c:257
> #11 0x55ee1ca12c9a in multifd_send_thread
> /mnt/sdb/backup/qemu/migration/multifd.c:657
> #12 0x55ee1d0607fc in qemu_thread_start
> /mnt/sdb/backup/qemu/util/qemu-thread-posix.c:519
> #13 0x7f78159ae2dd in start_thread (/lib64/libpthread.so.0+0x82dd)
> #14 0x7f78156df4b2 in __GI___clone (/lib64/libc.so.6+0xfc4b2)
>
> Reported-by: Euler Robot <address@hidden>
> Signed-off-by: Pan Nengyuan <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>