[Bug 1725685] [NEW] Systemd long reboot on OpenVZ

roma1390 1725685 at bugs.launchpad.net
Sat Oct 21 13:16:23 UTC 2017


Public bug reported:

Ubuntu 17.04
systemd: 232-21ubuntu2

short: Systemd on reboot waits extra 90sec for no reason

Other references:
  https://forum.openvz.org/index.php?t=tree&goto=52177&S=0012de5a5151a907e13af2b5267cf59d

Env: 
  OpenVZ 2.6.32-openvz-042stab120.19-amd64
  Ubuntu 17.04
  
Packages:
  # dpkg -l | grep systemd
  ii  libsystemd0:amd64                232-21ubuntu2                     amd64        systemd utility library
  ii  systemd                          232-21ubuntu2                     amd64        system and service manager
  ii  systemd-sysv                     232-21ubuntu2                     amd64        system and service manager - SysV links


console log during "problem"
=================
Sending SIGTERM to remaining processes...^M
Sending SIGKILL to remaining processes...^M
Sending SIGKILL to PID 338 (systemd-cgroups).^M
Sending SIGKILL to PID 339 (systemd-cgroups).^M
system-shutdown succeeded.^M
Rebooting.^M
=================

The "extra" wait is occurring before line:
  system-shutdown succeeded

Problem analysis, steps:
1. PID 1 does exec to /lib/systemd/systemd-shutdown
2. src/core/shutdown.c:main calls broadcast_signal(SIGKILL, true, false);
3. somehow /lib/systemd/systemd-cgroups-agent is started by /sys/fs/cgroup/systemd/release_agent
4. src/core/killall.c:broadcast_signal calls killall(sig, pids, send_sighup);
writes message: Sending SIGKILL to PID 338 (systemd-cgroups).
adds pid 338 to pids sed

5. broadcast_signal calls wait_for_children(pids, &mask);
6. in paralel process systemd-cgroups finishes
7. we still in wait_for_children and stuck here for 90 sec

Tried workaround approaches:
1. mount /dev/null -o bind /lib/systemd/systemd-cgroups-agent
will not work, before shutdown mounts are umounted, so we lose that one
2. change /sys/fs/cgroup/systemd/release_agent to /bin/false
still caches running false process and waits 90 sec for finish of it
3. write 0 to /sys/fs/cgroup/systemd/notify_on_release from script in /lib/systemd/system-shutdown
this is to late, those scripts runs after long delay

Simple proposed workaround:

disable notify before systemd-shutdown by using wrapper script

  dpkg-divert --add /lib/systemd/systemd-shutdown
  mv /lib/systemd/systemd-shutdown /lib/systemd/systemd-shutdown.distrib
  cat > /lib/systemd/systemd-shutdown <<EOF
  #!/bin/sh
  
  echo 0 > /sys/fs/cgroup/systemd/notify_on_release 
  exec /lib/systemd/systemd-shutdown.distrib "$@"
  EOF
  chmod +x /lib/systemd/systemd-shutdown

** Affects: systemd (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to systemd in Ubuntu.
https://bugs.launchpad.net/bugs/1725685

Title:
  Systemd long reboot on OpenVZ

Status in systemd package in Ubuntu:
  New

Bug description:
  Ubuntu 17.04
  systemd: 232-21ubuntu2

  short: Systemd on reboot waits extra 90sec for no reason

  Other references:
    https://forum.openvz.org/index.php?t=tree&goto=52177&S=0012de5a5151a907e13af2b5267cf59d

  Env: 
    OpenVZ 2.6.32-openvz-042stab120.19-amd64
    Ubuntu 17.04
    
  Packages:
    # dpkg -l | grep systemd
    ii  libsystemd0:amd64                232-21ubuntu2                     amd64        systemd utility library
    ii  systemd                          232-21ubuntu2                     amd64        system and service manager
    ii  systemd-sysv                     232-21ubuntu2                     amd64        system and service manager - SysV links

  
  console log during "problem"
  =================
  Sending SIGTERM to remaining processes...^M
  Sending SIGKILL to remaining processes...^M
  Sending SIGKILL to PID 338 (systemd-cgroups).^M
  Sending SIGKILL to PID 339 (systemd-cgroups).^M
  system-shutdown succeeded.^M
  Rebooting.^M
  =================

  The "extra" wait is occurring before line:
    system-shutdown succeeded

  Problem analysis, steps:
  1. PID 1 does exec to /lib/systemd/systemd-shutdown
  2. src/core/shutdown.c:main calls broadcast_signal(SIGKILL, true, false);
  3. somehow /lib/systemd/systemd-cgroups-agent is started by /sys/fs/cgroup/systemd/release_agent
  4. src/core/killall.c:broadcast_signal calls killall(sig, pids, send_sighup);
  writes message: Sending SIGKILL to PID 338 (systemd-cgroups).
  adds pid 338 to pids sed

  5. broadcast_signal calls wait_for_children(pids, &mask);
  6. in paralel process systemd-cgroups finishes
  7. we still in wait_for_children and stuck here for 90 sec

  Tried workaround approaches:
  1. mount /dev/null -o bind /lib/systemd/systemd-cgroups-agent
  will not work, before shutdown mounts are umounted, so we lose that one
  2. change /sys/fs/cgroup/systemd/release_agent to /bin/false
  still caches running false process and waits 90 sec for finish of it
  3. write 0 to /sys/fs/cgroup/systemd/notify_on_release from script in /lib/systemd/system-shutdown
  this is to late, those scripts runs after long delay

  Simple proposed workaround:

  disable notify before systemd-shutdown by using wrapper script

    dpkg-divert --add /lib/systemd/systemd-shutdown
    mv /lib/systemd/systemd-shutdown /lib/systemd/systemd-shutdown.distrib
    cat > /lib/systemd/systemd-shutdown <<EOF
    #!/bin/sh
    
    echo 0 > /sys/fs/cgroup/systemd/notify_on_release 
    exec /lib/systemd/systemd-shutdown.distrib "$@"
    EOF
    chmod +x /lib/systemd/systemd-shutdown

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1725685/+subscriptions



More information about the foundations-bugs mailing list