From: Peter Krempa Date: Thu, 25 Feb 2021 12:33:39 +0000 (+0100) Subject: qemuBackupJobTerminate: Don't calculate backup job stats if VM isn't active X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=cb29e4e801dc3b4f25038233a502c784ebf1e0c5;p=libvirt.git qemuBackupJobTerminate: Don't calculate backup job stats if VM isn't active If the VM isn't active calculating the job stats doesn't make sense. Additionally this prevents a crash of libvirtd if qemu terminates while libvirt wasn't running: Thread 28 "init-backup-tes" received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7fffb9310640 (LWP 3201116)] qemuDomainJobInfoUpdateTime (jobInfo=0x0) at ../../../libvirt/src/qemu/qemu_domainjob.c:275 275 if (!jobInfo->started) (gdb) bt #0 qemuDomainJobInfoUpdateTime (jobInfo=0x0) at ../../../libvirt/src/qemu/qemu_domainjob.c:275 #1 0x00007fffcba1a12d in qemuBackupJobTerminate (vm=0x7fff9c1bc840, jobstatus=QEMU_DOMAIN_JOB_STATUS_CANCELED) at ../../../libvirt/src/qemu/qemu_backup.c:563 #2 0x00007fffcbaefcae in qemuProcessStop (driver=0x7fff9c144ff0, vm=0x7fff9c1bc840, reason=VIR_DOMAIN_SHUTOFF_DAEMON, asyncJob=QEMU_ASYNC_JOB_NONE, flags=) at ../../../libvirt/src/qemu/qemu_process.c:7812 #3 0x00007fffcbaf2a10 in qemuProcessReconnect (opaque=) at ../../../libvirt/src/qemu/qemu_process.c:8578 #4 0x00007ffff7c46bb5 in virThreadHelper (data=) at ../../../libvirt/src/util/virthread.c:233 #5 0x00007ffff6e453f9 in start_thread () at /lib64/libpthread.so.0 #6 0x00007ffff766fb53 in clone () at /lib64/libc.so.6 Signed-off-by: Peter Krempa Reviewed-by: Michal Privoznik --- diff --git a/src/qemu/qemu_backup.c b/src/qemu/qemu_backup.c index d3d98c1d6a..6ce29c28e1 100644 --- a/src/qemu/qemu_backup.c +++ b/src/qemu/qemu_backup.c @@ -583,6 +583,9 @@ qemuBackupJobTerminate(virDomainObjPtr vm, } } + if (!virDomainObjIsActive(vm)) + return; + qemuDomainJobInfoUpdateTime(priv->job.current); g_clear_pointer(&priv->job.completed, qemuDomainJobInfoFree);