From 5b97ef2441c09a13fd9b70ae6f9bca9e38aa465d Mon Sep 17 00:00:00 2001 From: Thomas Lamprecht Date: Wed, 6 Sep 2017 13:29:07 +0200 Subject: [PATCH] restore_vma_archive: do not overwrite global signal handlers perls 'local' must be either used in front of each $SIG{...} assignments or they must be put in a list, else it affects only the first variable and the rest are *not* in local context. This may cause weird behaviour where daemons seemingly do not get terminating signals delivered correctly and thus may not shutdown gracefully anymore. Signed-off-by: Thomas Lamprecht --- PVE/QemuServer.pm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index 2aafc428..b52c93d6 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -5482,9 +5482,10 @@ sub restore_vma_archive { rmtree $tmpdir; # disable interrupts (always do cleanups) - local $SIG{INT} = $SIG{TERM} = $SIG{QUIT} = $SIG{HUP} = sub { - warn "got interrupt - ignored\n"; - }; + local $SIG{INT} = + local $SIG{TERM} = + local $SIG{QUIT} = + local $SIG{HUP} = sub { warn "got interrupt - ignored\n"; }; my $mapfifo = "/var/tmp/vzdumptmp$$.fifo"; POSIX::mkfifo($mapfifo, 0600);