Upstart Changelog

What's new in Upstart 1.13.2

Sep 4, 2014
  • Enforce 'initctl set-env' from being called from system job (LP: #1356824).
  • Defer use of remove-on-empty to stop session-level cgroup jobs from racing with cgmanager which can remove the cgroup before subsequent job processes have been moved into them (LP: #1357252).

New in Upstart 1.13.1 (Jul 17, 2014)

  • Fix for Session Init crasher triggered by restarting a job that runs 'initctl unset-env' (LP: #1222705).

New in Upstart 1.13 (Jul 12, 2014)

  • Fix for handling upgrade from non-stateful-re-exec instance to a stateful-re-exec-capable one (LP:#1303891).
  • Disable chroot sessions by default. A new '--chroot-sessions' command-line option restores the old default behaviour.
  • New tests and improved documentation.
  • Fix for Session Init umask change on re-exec (LP: #1302117).
  • Allow '--confdir' to look for system jobs in multiple locations, which also adds new command-line options '--append-confdir' and '--prepend-confdir' for full flexibility (LP: #1315060).
  • Allow initctl(8) commands 'set-env' and 'unset-env' to operate on multiple environment variables (LP: #1324096).
  • Support for cgroups via a new 'cgroup' stanza. This makes use of cgmanager(8) and is available to both System and Session Inits.
  • Support for cgroups can be disabled at built-time if required. See init(5) for 'cgroup' stanza syntax and examples.

New in Upstart 1.12.1 (Mar 11, 2014)

  • Fixed re-exec breakage caused by incorrect D-Bus API usage.
  • Tests updated to catch this issue.

New in Upstart 1.12 (Mar 11, 2014)

  • Stop Upstart indirectly stealing console ownership (most noticeably when run in a container).
  • Fixed bug that could result in incorrect output from initctl(8) environment commands.
  • Fixed incorrect variable usage which could result in a crash (LP: #1222705).
  • Fixed stateful re-exec issue triggered by invalid jobs (LP: #1269731).
  • Stateful re-exec fix to serialise the D-Bus session bus (LP: #1258098).
  • init-checkconf(8) now uses a Session Init and can also now be run as root.
  • upstart-socket-bridge(8) now supports IPv6 (thanks to Kai Mast and Cameron Norman).
  • Allow telinit(8) to work on systems with no D-Bus system bus.
  • Numerous test improvements.
  • Lots of man-page improvements.

New in Upstart 1.11 (Nov 14, 2013)

  • Add '--no-dbus' command-line option for the init(8) daemon (allowing event propagation to the Session Init via the upstart-event-bridge(8) to be disabled).
  • Serialise Session Init job environment table on re-exec (LP: #1238078).
  • upstart-{dbus,socket}-bridge(8): Don't clobber existing PATH (LP: #1234898).
  • upstart-file-bridge(8):
  • Allow watching for directory creation (LP: #1221466).
  • Reduce default output.
  • upstart-local-bridge(8): Handle arbitrary numbers of pairs and additional checks on input validity (LP: #1234898).
  • Improved Session Init shutdown speed (LP: #1227212).
  • New configure options: '--disable-local-bridge', '--disable-socket-bridge'.
  • Added upstart-file-bridge(8) and Session Init re-exec integration tests.
  • Retain umask for Session Init (LP: #1240686).
  • Make Session Init connect to D-Bus Session Bus on request (LP: #1203595, #1235649)
  • Improved build-time ABI compliance checking.
  • Doc updates and lots of test refinements.

New in Upstart 1.10 (Aug 24, 2013)

  • upstart-local-bridge: New bridge for starting jobs on local socket connections.
  • upstart-dconf-bridge: New bridge for Session Inits.
  • upstart-dbus-bridge: New '--bus-name' option to allow bus name variable to be included in dbus-event(7).
  • New "reload signal" stanza to allow jobs to specify a custom signal that will be sent to the main process (rather than the default SIGHUP).
  • Inclusion of Session Init sample jobs.
  • Re-exec fixes for handling chroot sessions.
  • Shutdown fix for Session Inits.
  • New python3 module and accompanying integration test suite for testing Upstart running as PID 1 and as a Session Init (priveleged and non-privileged).

New in Upstart 1.9.1 (Jul 5, 2013)

  • Fix respawn behaviour regression (introduced in version 1.8) affecting jobs which also specify shell meta-characters in the exec stanza (LP: #1181789).
  • Fix common bug which could cause a bridge to crash (LP: #1197225).
  • Various fixes for libupstart.
  • initctl2dot: Layout improvements.

New in Upstart 1.9 (Jun 28, 2013)

  • Apparmor support added by means of two new stanzas: 'apparmor load' and 'apparmor switch' (thanks Marc Deslauriers).
  • Stateful re-exec: now serialises all objects, not just the minimum set.
  • Allow inherited environment variables to be unset for Session Inits.
  • Ability to specify multiple configuration directories when running as a Session Init.
  • libupstart: Client library for communicating with Upstart.
  • upstart-dbus-bridge: New bridge to allow jobs to react to D-Bus signals.
  • The usual round of fixes and doc improvements.

New in Upstart 1.8 (Mar 22, 2013)

  • upstart-file-bridge: New bridge to allow jobs to react to file, directory and file glob events (create/modify/delete).
  • upstart-monitor: Simple cli/gui tool that shows event flows.

New in Upstart 1.7 (Mar 4, 2013)

  • New initctl commands: set-env, unset-env, get-env, list-env, reset-env, list-sessions (all except last with corresponding D-Bus methods).
  • New D-Bus-only signals EventEmitted, Restarted, and EndSession method.
  • Ability to run with PID >1 to allow Upstart to manage a user session.
  • Running Upstart as a 'Session Init' in this way provides features
  • above and beyond those provided by the original User Jobs such that
  • the User Job facility has been removed entirely: to migrate from
  • a system using User Jobs, simply ensure the user session is started with
  • 'init --user'.
  • New upstart-event-bridge bridge which proxies system-level events down to Session Inits, allowing users jobs to react to udev events.
  • Ability to read job configuration and override files from multiple freedesktop-compliant locations (Session Init only).
  • Ability to shutdown both via a system shutdown request and via a user logout request (Session Init only).
  • Additionally, there are a few bug fixes and 94 new tests.

New in Upstart 1.6.1 (Dec 8, 2012)

  • Improved re-exec performance.
  • Minor logger fixes for unflushed data.
  • Handle re-exec scenario when requested from within a chroot.
  • Minor serialisation data format change to handle chroots and user sessions.
  • Added extra re-exec tests including explicit upgrade tests reading from pre-prepared JSON data files.
  • Make jobs running within a chroot log their output within the chroot.
  • Added "Restart" D-Bus method.
  • Changed 'telinit u' to use "Restart" D-Bus method rather than sending SIGTERM to play nicely when busybox(1) is init.
  • Added "GetState" D-Bus method allowing current serialised internal state to be queried.

New in Upstart 1.6 (Nov 15, 2012)

  • 'telinit u' now performs a stateful re-exec, allowing
  • Upstart to continue to supervise jobs after an upgrade of either itself, or any of its dependent libraries.
  • Adds dependency on libjson (JSON-C).
  • Added initramfs-less boot support.
  • Allow tests to work in sbuild environment.
  • Improved error handling.
  • Fixed crasher if 'kill signal' specified as a particular numeric.
  • Documentation fixes.

New in Upstart 1.5 (Mar 22, 2012)

  • Lots of "console log" improvements (and new tests).
  • New 'early logging' facility which allows jobs that end before the log disk is writeable to have their output peristed to disk when the disk later becomes writeable.
  • Upstart is now able to detect jobs which leak file descriptors: a message is generated when run with debug enabled ('--debug' / "initctl log-priority debug").
  • New "usage" stanza which allows instance jobs to display a usage message explaining how job should be started. The usage is displayed when the user has not specified the correct variables to allow the job to be started, or when the user queries the usage using "initctl usage ".

New in Upstart 1.4 (Dec 13, 2011)

  • Improved console setting.
  • New "log" argument to console stanza allowing a system jobs stdout/stderr to be captured to a file. New options added to support this feature: '--default-console', '--logdir', '--no-log'. This feature only currently applies to system jobs: user jobs which specify "console log" will be treated as if they had specified "console none".
  • New "setuid" and "setgid" stanzas to allow system jobs to be run under the specified uid/gid corresponding to the given name/group.
  • Improvements to upstart-udev-bridge to handle problematic hardware (such as some batteries) which pass non-printable bytes to userspace.

New in Upstart 1.2 (Mar 23, 2011)

  • Fixed incorrect shell redirection syntax that broke at least pdksh. (Bug: #739984)

New in Upstart 1.1 (Mar 17, 2011)

  • When /sbin/halt is called (without -p), this now results in the system being halted and not powered down. If you meant it to be powered down, use /sbin/poweroff. (Bug: #532366)
  • Fixed file descriptor leak of /proc/self/fd/NN to shell scripts executed by Upstart. (Bug: #619269)
  • Fixed bug where console was closed too early, causing loss of error messages and non-functioning keyboard-request event, (Bug: #707151)
  • Fixed bug where environment variables containing unusual characters were not accepted due to a mis-reading of POSIX. (Bug: #567068).
  • Fixed non-removal of symlinks on "make uninstall". (Bug: #604227)
  • Reduced priority of job termination messages from warn to info if the exit status or signal is listed in "normal exit". (Bug: #522197)

New in Upstart 1.0.0 (Mar 2, 2011)

  • Fixed an assertion when a file named /etc/init/.conf is created. Discovered by Коренберг Марк (Bug: #720573)
  • utmp entries will be replaced with DEAD_PROCESS ones when a pid supervised by Upstart terminates. (Bug: #183729)
  • shutdown now correctly returns error code if it fails to shutdown the system.
  • Included bash completion script in contrib directory. (Bug: #672067)

New in Upstart 0.6.6 (Apr 28, 2010)

  • The main change in this release is that Upstart now takes care of mounting /proc and /sys on boot in the case where they haven't already been mounted by an initramfs or initrd. This corrects the long-running "chicken and egg" due to Upstart's use of /proc/self/fd to execute shell code, and allows Upstart to use /sys in future as well.

New in Upstart 0.6.3 (Aug 3, 2009)

  • The biggest disadvantage to people actually using your software is that they find bugs, this one's a doozy because it looks like it affects older 0.3 releases as well. Now seems as good a time as any to repeat my recommendation that distributions, mobile and embedded appliance developers using Upstart consider using 0.6 in their next release rather than sticking with 0.3

New in Upstart 0.6.2 (Jul 22, 2009)

  • Fixed an assertion when a job receives a stop event or the stop command while still in the starting state.
  • Changed exec() trace handling to allow the main process to exec another before fork()ing while still following (e.g. main script exec'ing a daemon)
  • Restored missing chdir("/") call when catching crashes.

New in Upstart 0.6.0 (Jul 10, 2009)

  • The licence for Upstart has been changed back to version 2 of the GNU GPL.
  • D-Bus 1.2.15 is now required, this is the current GIT HEAD pending a 1.2.16 release.
  • Configuration paths have changed. Global configuration now resides in "/etc/init.conf" while jobs are now configured in "/etc/init"
  • Job configuration filenames must now end in ".conf"
  • Default configuration files are now supplied in the "conf" sub-directory of the source, and installed into "/etc/init".
  • These match the Debian/Ubuntu sysvinit configuration so may require some tweaking for other distributions, but provide an excellent base.
  • The old example-jobs tarballs are deprecated.
  • The D-Bus interface remains unstable, to reflect this the current interface name has changed to "com.ubuntu.Upstart0_6" and the name of the job and instance interfaces have changed to match.
  • The "EmitEvent" D-Bus method gains a wait argument, when given as TRUE (the recommended setting) the method call will be blocked until all effects of the event have finished. When FALSE the method call will return once the event has been queued.
  • The "Start", "Stop" and "Restart" D-Bus methods of jobs and instances gain a similar wait argument.
  • The Upstart D-Bus object now has "version" and "log_priority" properties. The former is to obtain the version of the init daemon, the latter allows you to obtain and change the logging priority.
  • Job D-Bus objects now have "name", "description", "author" and "version" properties to obtain the job name and the contents of the equivalent job file fields for the others.
  • Instance D-Bus objects now have "name", "goal", "state" and "processes" properties to obtain the instance name, goal, state and list of running processes and their pids respectively.
  • The default D-Bus security policy now permits use of the "Get" methods by all users, including obtaining values of properties.
  • initctl has been rewritten with functionality more along the lines of Upstart 0.3.x than before; since many distributions are still shipping 0.3.x the summary of changes for the tool reflects both changes from 0.3.x and 0.5.x
  • The global "-p"/"--pid" argument has been dropped, since communication is over D-Bus. New "--system" and "--dest" arguments have been added to force communication over the system bus, and specify the destination, instead of using the private socket (this is the default when run as non-root to permit "list" and "status" to work for ordinary users).
  • The "-i"/"--id" and "--show-ids" options to commands have been dropped since jobs no longer have ids.
  • Since instances may now have names, these will be displayed in brackets after the job name when one is present. The output of the goal and state are now expressed as "start/running" instead of "(start) running" to disambiguate.
  • initctl "start" and "stop" now only output the final state of the job, not intermediate states it passes through. When called with "--no-wait", the commands now output a status before returning (which may not be the final status).
  • initctl "start", "stop" and "status" now only accept a single job name. Further arguments are taken as KEY=VALUE environment variables to pass to the job, replacing the previous "-e" option.
  • There is a new initctl "restart" command, with matching /sbin/restart symlink. This is the atomic equivalent of calling "stop" and "start" with the exception that a stopped job will not be started again.
  • In keeping with the newer instance model, instance jobs are now output on separate lines with their full names rather than indented under a "master" instance.
  • initctl "status" will exit non-zero if the job name was not found. (Bug: #328323)
  • initctl "status" now outputs information for multi-instance jobs. (Bug: #331407)
  • initctl "list" no longer accepts a pattern, use grep. Output is no longer sorted.
  • initctl "emit" no longer outputs changes that occur as a result of the event.
  • When initctl "emit" is called with "--no-wait", it will return immediately. (Bug: #324890)
  • initctl "emit" now only accepts a single event name. Further arguments are taken as KEY=VALUE environment for the event, replacing the previous "-e" option.
  • initctl "jobs" and "events" have been dropped.
  • initctl "log-priority" may be called without arguments, in which case it will output the current priority. (Bug: #280529)
  • initctl "reload" has been renamed to "reload-configuration" to avoid confusion with reloading a job's configuration.
  • initctl(8) man page updated. (Bug: #285753)
  • runlevel no longer accepts the --set and --reboot arguments, instead telinit and shutdown write these records into utmp and wtmp.
  • runlevel(7) man page added to describe the runlevel event, and the implementation of runlevels and System V compatibility in Upstart. (Bug: #60429)
  • telinit will no longer silently ignore the "a", "b" or "c" runlevels.
  • telinit now accepts the previously ignored "-e" argument, passing the environment variables given along with the runlevel event.
  • telinit now officially accepts the "q"/"Q" and "u"/"U" arguments, the former will reload the Upstart configuration while the latter will re-execute Upstart.
  • telinit q will also attempt to reconnect to the D-Bus system bus if the connection has not been made, or has been lost. (Bug: #323022)
  • reboot no longer silently ignores the "-t" option.
  • reboot now silently ignores the "-n", "-i" and "-h" options; it will no longer sync your disks, down your network interfaces or spin down your hard drives. This functionality is all handled by the kernel on a modern system. (Bug: #92685)
  • reboot now writes a "shutdown" record to /var/log/wtmp, this means that the "-w" option is honoured with its original intent. We still silently ignore the "-d" option.
  • shutdown message generation fixed to be more easily translatable. (Bug: #102565)
  • The TERM/KILL timeout, and other system timeouts, now use the monotonic clock so are unaffected by system clock changes. (Bug: #389588)
  • Respawn detection now uses the monotonic clock so is unaffected by system clock changes. (Bug: #389586)
  • Significant improvement in the amount of manual pages included with Upstart and their content. (Bug: #60429)
  • A manual page refering people from /etc/inittab to /etc/init is also included. (Bug: #72058)

New in Upstart 0.5.3 (Jun 22, 2009)

  • Fixed segfault when initctl status called with arguments. (Bug: #388753)
  • Fixed segfault when initctl log-priority called with no argument. (Bug: #280529)
  • Fixed shutdown to pass $INIT_HALT variable as last argument, not as first. (Bug: #303574)
  • Added temporary support for "telinit u" until we have true re-exec support. This will be replaced by an initctl command in future. (Bug: #388742)
  • Corrected formatting of initctl(8) manpage. (Bug: #388745)

New in Upstart 0.5.2 (Jun 18, 2009)

  • The licence for Upstart has been updated to GNU GPL v3.
  • Overhaul of the automatically generated D-Bus bindings code, fixing many issues with memory leaks, inconsistent return values and loss of method returns after the method has taken place.
  • D-Bus 1.2.4 is now required, and must be patched to fix https://bugs.freedesktop.org/show_bug.cgi?id=22316
  • D-Bus Job objects now have "name", "description", "author" and "version" properties.
  • D-Bus Instance object now have "name", "goal" and "state" properties.
  • initctl now obtains the name properties for display instead of printing the mangled object path component. (Bug: #299290)
  • D-Bus configuration updated now that the daemon is fixed to be deny-by-default, and updated to avoid bare "send_interface" stanzas. (Bug: #323021)
  • Fixed assertion caused by the post-start or pre-stop scripts exiting after the main process of a respawning job had exite (Bug: #381048)
  • The /proc filesystem need not be mounted if the "oom_adj" configuration stanza is not used. (Bug: #259801)
  • Overly large values to configuration stanzas are now caught and rejected. (Bug: #340134)
  • The --enable-compiler-warnings configure option has been extended to add -Wextra, but turns off a few of the more extreme warnings
  • GNU C Library v2.4 (or backported inotify support) is required
  • pkg-config 0.22 is now required, it probably was anyway but we now explicitly check for it.
  • Dependency on Python for the D-Bus binding tool has been dropped and replaced with a dependency on expat 2.0.0

New in Upstart 0.5.1 (Jan 29, 2009)

  • Major rewrite of the memory allocator used by Upstart; the old allocator had several limitations and a few issues. I must stress that none of the issues were known to affect Upstart itself, however it pays to be prudent.
  • An issue where an object in a linked list would be freed after the linked list was freed was fixed. Upstart had some twisty code logic to work around it, which has now been dropped.
  • An issue where a string could fail to be appended in an OOM situation was fixed; if Upstart is affected, this could cause D-Bus Introspection data to be corrupted.
  • An issue where multiple socket watches being freed could lead to bad memory access has been fixed; Upstart 0.5.0 included a temporary fix for the D-Bus connection handling, this replaces that with a proper fix that also corrects the same problem for timers and other main loop watches that Upstart was not believed to be affected by.
  • Compiler warnings when compiling the test suite with -O1 and above have been fixed where found.
  • A race condition in the test cases for a process stopping with SIGSTOP has been fixed, this could sometimes cause this test to hang.