diff --git a/debian/patches/extra/0005-init-daemonize-defuse-PID-file-resolve-error.patch b/debian/patches/extra/0005-init-daemonize-defuse-PID-file-resolve-error.patch new file mode 100644 index 0000000..49890a2 --- /dev/null +++ b/debian/patches/extra/0005-init-daemonize-defuse-PID-file-resolve-error.patch @@ -0,0 +1,42 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Fiona Ebner +Date: Fri, 28 Oct 2022 10:09:46 +0200 +Subject: [PATCH] init: daemonize: defuse PID file resolve error + +When proxmox-file-restore invokes QEMU, the PID file is a (temporary) +file that's already unlinked, so resolving the absolute path here +failed. + +It should not be a critical error when the PID file unlink handler +can't be registered, because the path can't be resolved for whatever +reason. If the file is already gone from QEMU's perspective (i.e. +errno is ENOENT), silently ignore the error. Otherwise, print a +warning. + +Reported-by: Dominik Csapak +Suggested-by: Thomas Lamprecht +Signed-off-by: Fiona Ebner +--- + softmmu/vl.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/softmmu/vl.c b/softmmu/vl.c +index 706bd7cff7..3381c56af7 100644 +--- a/softmmu/vl.c ++++ b/softmmu/vl.c +@@ -2438,10 +2438,11 @@ static void qemu_maybe_daemonize(const char *pid_file) + + pid_file_realpath = g_malloc0(PATH_MAX); + if (!realpath(pid_file, pid_file_realpath)) { +- error_report("cannot resolve PID file path: %s: %s", +- pid_file, strerror(errno)); +- unlink(pid_file); +- exit(1); ++ if (errno != ENOENT) { ++ warn_report("not removing PID file on exit: cannot resolve PID " ++ "file path: %s: %s", pid_file, strerror(errno)); ++ } ++ return; + } + + qemu_unlink_pidfile_notifier = (struct UnlinkPidfileNotifier) { diff --git a/debian/patches/series b/debian/patches/series index 326313b..6dbf2b1 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -2,6 +2,7 @@ extra/0001-monitor-qmp-fix-race-with-clients-disconnecting-earl.patch extra/0002-block-io_uring-revert-Use-io_uring_register_ring_fd-.patch extra/0003-virtiofsd-use-g_date_time_get_microsecond-to-get-sub.patch extra/0004-chardev-fix-segfault-in-finalize.patch +extra/0005-init-daemonize-defuse-PID-file-resolve-error.patch bitmap-mirror/0001-drive-mirror-add-support-for-sync-bitmap-mode-never.patch bitmap-mirror/0002-drive-mirror-add-support-for-conditional-and-always-.patch bitmap-mirror/0003-mirror-add-check-for-bitmap-mode-without-bitmap.patch