I've verified this on Ubuntu 18.04 LTS

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:        18.04
Codename:       bionic

root@ubuntu:/etc/init.d# systemctl start exitcode
root@ubuntu:/etc/init.d# echo $?
0

root@ubuntu:/etc/init.d# systemctl status exitcodetest
● exitcodetest.service - LSB: Test Exit Code (SysV)
   Loaded: loaded (/etc/init.d/exitcodetest; generated)
   Active: active (exited) since Mon 2019-05-13 20:14:31 UTC; 9s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 3141 ExecStop=/etc/init.d/exitcodetest stop (code=exited, status=6)
  Process: 3152 ExecStart=/etc/init.d/exitcodetest start (code=exited, status=6)

May 13 20:14:31 ubuntu systemd[1]: Starting LSB: Test Exit Code (SysV)...
May 13 20:14:31 ubuntu systemd[1]: Started LSB: Test Exit Code (SysV).

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to systemd in Ubuntu.
https://bugs.launchpad.net/bugs/1828883

Title:
  systemd sysv-compatibility eats exit codes

Status in systemd package in Ubuntu:
  New

Bug description:
  Systemd properly honors an exit code of 6 when creating a native
  service, like so:

  ---8<---
  ranger@carolina:/lib/systemd/system$ cat exitcode.service
  [Unit]
  Description=Test Exit Code (Systemd)

  [Service]
  Type=oneshot
  ExecStart=/bin/bash -c 'exit 6'

  [Install]
  WantedBy=default.target
  ranger@carolina:/lib/systemd/system$ sudo systemctl start exitcode
  Job for exitcode.service failed because the control process exited with error 
code.
  See "systemctl status exitcode.service" and "journalctl -xe" for details.
  ranger@carolina:/lib/systemd/system$ echo $?
  1
  ---8<---

  However, the equivalent SysV init file improperly returns an exit code
  of 0 when starting under the compatibility layer:

  ---8<---
  ranger@carolina:/etc/init.d$ cat exitcode
  #! /bin/sh

  ### BEGIN INIT INFO
  # Provides:          exitcode
  # Required-Start:    $local_fs
  # Default-Start:     2 3 4 5
  # Default-Stop:      0 1 6
  # Short-Description: Test Exit Code (SysV)
  # Description:       Test case for Systemd SysV compatibility layer
  ### END INIT INFO

  exit 6
  ranger@carolina:/etc/init.d$ sudo systemctl enable exitcode
  exitcode.service is not a native service, redirecting to systemd-sysv-install.
  Executing: /lib/systemd/systemd-sysv-install enable exitcode
  ranger@carolina:/etc/init.d$ sudo systemctl start exitcode
  ranger@carolina:/etc/init.d$ echo $?
  0
  ---8<---

  Even if I change the script to do `exit 1` it still returns exit code
  0.

  These are tiny examples but we are hitting it in the real world with
  the startup scripts for the OpenNMS Debian/Ubuntu packages, which
  return exit code 6 (LSB "not configured") when there are leftover
  upgrade files in `/etc/opennms`. The OpenNMS startup is not properly
  failing on attempted startup in this case.

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

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to