* [PATCH qemu-server 0/1] fix #7590: qemu-server: apply timeout to QEMU start fork
@ 2026-06-25 11:44 Samuel Rufinatscha
2026-06-25 11:45 ` [PATCH qemu-server 1/1] " Samuel Rufinatscha
0 siblings, 1 reply; 2+ messages in thread
From: Samuel Rufinatscha @ 2026-06-25 11:44 UTC (permalink / raw)
To: pve-devel
This series makes the forked QEMU start path use the existing start
timeout.
If the timeout expires, it terminates processes in the VM scope and
cleans up QSD before reporting the start failure. This prevents a stuck
qmstart task from holding the VM config lock indefinitely or leaving a
partially started QEMU process running.
Tested with QEMU blocked on a FIFO (see the reproducer at [0]).
qmstart timed out and released the lock, leaving no active scope or
QEMU process. Normal VM startup still works.
[0] https://bugzilla.proxmox.com/show_bug.cgi?id=7590
Samuel Rufinatscha (1):
fix #7590: qemu-server: apply timeout to QEMU start fork
src/PVE/QemuServer.pm | 28 +++++++++++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)
--
2.47.3
^ permalink raw reply [flat|nested] 2+ messages in thread
* [PATCH qemu-server 1/1] fix #7590: qemu-server: apply timeout to QEMU start fork
2026-06-25 11:44 [PATCH qemu-server 0/1] fix #7590: qemu-server: apply timeout to QEMU start fork Samuel Rufinatscha
@ 2026-06-25 11:45 ` Samuel Rufinatscha
0 siblings, 0 replies; 2+ messages in thread
From: Samuel Rufinatscha @ 2026-06-25 11:45 UTC (permalink / raw)
To: pve-devel
Apply the existing start timeout to the forked QEMU startup path and
clean up the VM scope on timeout. This prevents stuck qmstart tasks
from holding the config lock indefinitely or leaving a partially
started QEMU process running.
Signed-off-by: Samuel Rufinatscha <s.rufinatscha@proxmox.com>
Link: https://bugzilla.proxmox.com/show_bug.cgi?id=7590
---
src/PVE/QemuServer.pm | 28 +++++++++++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)
diff --git a/src/PVE/QemuServer.pm b/src/PVE/QemuServer.pm
index 55e9f520..df400376 100644
--- a/src/PVE/QemuServer.pm
+++ b/src/PVE/QemuServer.pm
@@ -5762,7 +5762,7 @@ sub vm_start_nolock {
};
my $run_qemu = sub {
- PVE::Tools::run_fork sub {
+ my $run_qemu_child = sub {
PVE::Systemd::enter_systemd_scope($vmid, "Proxmox VE VM $vmid",
%systemd_properties);
@@ -5791,6 +5791,32 @@ sub vm_start_nolock {
die "QEMU exited with code $exitcode\n";
}
};
+
+ my (undef, $timed_out) =
+ PVE::Tools::run_fork_with_timeout($start_timeout || undef, $run_qemu_child);
+
+ if ($timed_out) {
+ eval {
+ run_command(
+ [
+ '/bin/systemctl',
+ 'kill',
+ '--kill-whom=all',
+ '--signal=KILL',
+ "$vmid.scope",
+ ],
+ %silence_std_outs,
+ noerr => 1,
+ timeout => 10,
+ );
+ PVE::Systemd::wait_for_unit_removed("$vmid.scope", 20);
+ };
+ warn "failed to clean up timed-out VM start scope - $@" if $@;
+
+ $cleanup_qsd->();
+
+ die "QEMU start timed out after $start_timeout seconds\n";
+ }
};
if ($conf->{hugepages}) {
--
2.47.3
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-06-25 11:45 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-25 11:44 [PATCH qemu-server 0/1] fix #7590: qemu-server: apply timeout to QEMU start fork Samuel Rufinatscha
2026-06-25 11:45 ` [PATCH qemu-server 1/1] " Samuel Rufinatscha
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.