On Tue, Aug 18, 2026 at 05:16:33PM +0200, Peter Krempa via Devel wrote:
From: Peter Krempa <[email protected]>Preserve the error on cleanup path as cleanup of the 'libivrt_iohelper' process may overwrite it with an unactionable error, such as when attempting to restore a save image while the VM is already running: $ virsh list Id Name State -------------------------- 9 cd running $ virsh restore /tmp/cd.save error: Failed to restore domain from /tmp/cd.save error: internal error: Child process (LIBVIRT_LOG_OUTPUTS=1:stderr /home/pipo/build/libvirt/gcc/src/libvirt_iohelper /tmp/cd.save 0) unexpected fatal signal 13 After this patch the original error is reported: $ virsh restore /tmp/cd.save error: Failed to restore domain from /tmp/cd.save error: Requested operation is not valid: domain 'cd' is already active Signed-off-by: Peter Krempa <[email protected]>
Reviewed-by: Martin Kletzander <[email protected]>
---
src/qemu/qemu_driver.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 61d95bfbbf..25ba6695bb 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -5985,6 +5985,7 @@ qemuDomainRestoreInternal(virQEMUDriver *driver,
bool sparse = false;
bool bypass_cache = (flags & VIR_DOMAIN_SAVE_BYPASS_CACHE) != 0;
g_autoptr(qemuMigrationParams) restoreParams = NULL;
+ virErrorPtr save_err = NULL;
virCheckFlags(QEMU_DOMAIN_RESTORE_FLAGS, -1);
@@ -6109,6 +6110,7 @@ qemuDomainRestoreInternal(virQEMUDriver *driver,
qemuProcessEndJob(vmNew);
cleanup:
+ virErrorPreserveLast(&save_err);
VIR_FORCE_CLOSE(fd);
if (virFileWrapperFdClose(wrapperFd) < 0)
ret = -1;
@@ -6117,6 +6119,7 @@ qemuDomainRestoreInternal(virQEMUDriver *driver,
if (vmNew && ret < 0)
qemuDomainRemoveInactive(vmNew, 0, false);
virDomainObjEndAPI(&vmNew);
+ virErrorRestore(&save_err);
return ret;
}
--
2.55.0
signature.asc
Description: PGP signature
