Peter Xu <pet...@redhat.com> writes: > Both migration thread or background snapshot thread will take a refcount of > the migration object at the entrace of the thread function. > > That makes sense, because it protects the object from being freed by the > main thread in migration_shutdown() later, but it might still race with it > if the thread is scheduled too late. Consider the case right after > pthread_create() happened, VM shuts down with the object released, but > right after that the migration thread finally got created, referencing > MigrationState* in the opaque pointer which is already freed. > > The only 100% safe way to make sure it won't get freed is taking the > refcount right before the thread is created, meanwhile when BQL is held. > > Signed-off-by: Peter Xu <pet...@redhat.com>
Reviewed-by: Fabiano Rosas <faro...@suse.de>