Package: needrestart
Version: 2.11-2
Severity: normal

Dear Maintainer,

The script for apt-daily.service was recently modified by an update.
When this update was installed by `unattended-upgrades`, `needrestart`
restarted the service.  I.e. needrestart terminates unattended-upgrades,
and hence itself.  This causes a few lines of log noise (below), and
does not quite seem desirable.

Technically this could happen to *any* script triggered by a systemd
timer.  At a guess, the behaviour would be similar to if the timer fired
just before someone shuts the system down, so we shouldn't worry *too*
much about this general case.

So either apt-daily.service could be treated specially, or needrestart
could ignore all Type=oneshot services.

The latter raises questions about a longer-running oneshot service
which is security-sensitive...  So I think the simplest solution is
treat apt-daily.service specially.

apt-daily-upgrade.service should also be treated the same way,
because it also runs unattended-upgrades.

I think unattended-upgrades.service should also be treated
the same way, because this is the service that runs unattended-upgrades
on shutdown (if enabled).


May 17 02:48:40 unstable apt.systemd.daily[3046]: Restarting services...
May 17 02:48:40 unstable apt.systemd.daily[3046]:  systemctl restart 
apt-daily.service
May 17 02:48:40 unstable systemd[1]: apt-daily.service: Main process exited, 
code=killed, status=15/TERM
May 17 02:48:40 unstable systemd[1]: Stopped Daily apt download activities.
May 17 02:48:40 unstable systemd[1]: apt-daily.service: Unit entered failed 
state.
May 17 02:48:40 unstable systemd[1]: apt-daily.timer: Adding 11h 58min 
38.111766s random time.
May 17 02:48:40 unstable systemd[1]: apt-daily.service: Failed with result 
'signal'.


-- Package-specific info:
needrestart output:



-- System Information:
Debian Release: 9.0
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing')
Architecture: armel
 (armv5tel)

Kernel: Linux 3.16.0-4-kirkwood
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages needrestart depends on:
ii  dpkg                       1.18.23
ii  gettext-base               0.19.8.1-2
ii  libintl-perl               1.26-2
ii  libmodule-find-perl        0.13-1
ii  libmodule-scandeps-perl    1.23-1
ii  libproc-processtable-perl  0.53-2
ii  libsort-naturally-perl     1.03-1
ii  libterm-readkey-perl       2.37-1
ii  perl                       5.24.1-2
ii  xz-utils                   5.2.2-1.2+b1

Versions of packages needrestart recommends:
ii  libpam-systemd  232-23

Versions of packages needrestart suggests:
pn  needrestart-session | libnotify-bin  <none>

-- Configuration Files:
/etc/needrestart/needrestart.conf changed:
$nrconf{restart} = 'a';
$nrconf{blacklist} = [
    # ignore sudo (not a daemon)
    qr(^/usr/bin/sudo(\.dpkg-new)?$),
    # ignore DHCP clients
    qr(^/sbin/(dhclient|dhcpcd5|pump|udhcpc)(\.dpkg-new)?$),
    # ignore apt-get (Debian Bug#784237)
    qr(^/usr/bin/apt-get(\.dpkg-new)?$),
];
$nrconf{override_rc} = {
    # DBus
    qr(^dbus) => 0,
    # display managers
    qr(^gdm) => 0,
    qr(^kdm) => 0,
    qr(^nodm) => 0,
    qr(^sddm) => 0,
    qr(^wdm) => 0,
    qr(^xdm) => 0,
    qr(^lightdm) => 0,
    qr(^slim) => 0,
    qr(^lxdm) => 0,
    # networking stuff
    qr(^network-manager) => 0,
    qr(^NetworkManager) => 0,
    qr(^wpa_supplicant) => 0,
    qr(^openvpn) => 0,
    qr(^quagga) => 0,
    qr(^tinc) => 0,
    # gettys
    qr(^getty@.+\.service) => 0,
    # systemd --user
    qr(^user@\d+\.service) => 0,
    # misc
    qr(^zfs-fuse) => 0,
    qr(^mythtv-backend) => 0,
    qr(^xendomains) => 0,
    qr(^lxcfs) => 0,
    # workaround for broken systemd-journald
    # (see also Debian Bug#771122 & #771254)
    qr(^systemd-journald) => 0,
    # more systemd stuff
    # (see also Debian Bug#784238 & #784437)
    qr(^emergency\.service$) => 0,
    qr(^rescue\.service$) => 0,
    # don't restart systemd-logind, see #798097
    qr(^systemd-logind) => 0,
};
$nrconf{override_cont} = {
};
$nrconf{blacklist_interp} = [
    # ignore temporary files
    qr(^/tmp/),
    qr(^/var/),
    qr(^/run/),
];
$nrconf{blacklist_mappings} = [
    # special device paths
    qr(^/(SYSV00000000$|drm$|dev/)),
    # aio(7) mapping
    qr(^/\[aio\]),
    # Oil Runtime Compiler's JIT files
    qr(/orcexec\.[\w\d]+( \(deleted\))?$),
];
$nrconf{skip_mapfiles} = (-d '/proc/sys/kernel/grsecurity' ? -1 : 0);
if(-d q(/etc/needrestart/conf.d)) {
      foreach my $fn (sort </etc/needrestart/conf.d/*.conf>) {
              print STDERR "$LOGPREF eval $fn\n" if($nrconf{verbose});
              eval do { local(@ARGV, $/) = $fn; <>};
              die "Error parsing $fn: $@" if($@);
      }
}


-- no debconf information

Reply via email to