On Fri, Jul 6, 2018 at 6:41 PM, Dr. David Alan Gilbert <dgilb...@redhat.com> wrote: > * Dr. David Alan Gilbert (dgilb...@redhat.com) wrote: >> * Lidong Chen (jemmy858...@gmail.com) wrote: >> > Qemu initialize the MigrationIncomingState structure in >> > migration_object_init, >> > but not release it. this patch release it in migration_object_finalize. >> > >> > Signed-off-by: Lidong Chen <lidongc...@tencent.com> >> >> Queued > > I've had to unqueue this, see below: > >> >> > --- >> > migration/migration.c | 7 +++++++ >> > 1 file changed, 7 insertions(+) >> > >> > diff --git a/migration/migration.c b/migration/migration.c >> > index 05aec2c..e009a05 100644 >> > --- a/migration/migration.c >> > +++ b/migration/migration.c >> > @@ -156,6 +156,13 @@ void migration_object_init(void) >> > void migration_object_finalize(void) >> > { >> > object_unref(OBJECT(current_migration)); >> > + >> > + qemu_sem_destroy(¤t_incoming->postcopy_pause_sem_fault); >> > + qemu_sem_destroy(¤t_incoming->postcopy_pause_sem_dst); >> > + qemu_event_destroy(¤t_incoming->main_thread_load_event); >> > + qemu_mutex_destroy(¤t_incoming->rp_mutex); >> > + g_array_free(current_incoming->postcopy_remote_fds, true); > > That array is already free'd in migration_incoming_state_destroy, > so I see reliable glib assert's from this array free.
The migration_incoming_state_destroy only invoked in destination qemu. The source qemu will not free this memory. So I think free current_incoming->postcopy_remote_fds is not good way. and migration_object_init and migration_object_finalize should not be invoked in main function. It's better to alloc memory when start migration and release it when migration finished. I will submit a new version patch to fix it. > > Dave > >> > + g_free(current_incoming); >> > } >> > >> > /* For outgoing */ >> > -- >> > 1.8.3.1 >> > >> -- >> Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK > -- > Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK