upstart 0.3.9 "Highway to the Danger Zone"

Release consisting of accumulated bug fixes backported from the main trunk, which won't be released for a little while.

Milestone information

Project:
upstart
Series:
0.3
Version:
0.3.9
Code name:
Highway to the Danger Zone
Released:
 
Registrant:
Scott James Remnant (Canonical)
Release registered:
Active:
No. Drivers cannot target bugs and blueprints to this milestone.  

Download RDF metadata

Activities

Assigned to you:
No blueprints or bugs assigned to you.
Assignees:
No users assigned to blueprints and bugs.
Blueprints:
No blueprints are targeted to this milestone.
Bugs:
No bugs are targeted to this milestone.

Download files for this release

After you've downloaded a file, you can verify its authenticity using its MD5 sum or signature. (How do I verify a download?)

File Description Downloads
download icon upstart-0.3.9.tar.gz (md5) 18
last downloaded 40 weeks ago
download icon upstart-0.3.9.tar.bz2 (md5) upstart 0.3.9 28
last downloaded 39 weeks ago
Total downloads: 46

Release notes 

 * Fixed crasher caused by starting a job with a no-arguments event.

 * Initialisation order changed so that the control socket is opened and configuration parsed after inherited file descriptors are closed and the console opened. Otherwise if we inherit fewer than the standard three file descriptors (e.g. from OpenVZ) we closed our own control socket, etc. (Bug: #87173)

 * Kill all processes in a supervised process's process group so that we catch looping or sleeping processes that a shell is waiting for. (Bug: #121733)

 * Missing inotify support detected correctly and warning suppressed.

 * Stanza names in configuration may no longer be placed inside quotes.

 * Fix dangling halt and poweroff symlinks when Upstart compiled without --enable-compat=sysv. (Bug: #93356)

 * Fix that --with-included-gettext did not include libintl.a as it should have. (Bug: #117848)

 * Updated hacking requirements to Automake 1.10 and Gettext 0.16.1 since this version of Automake makes it easier for package maintainers because it causes us to ship libtool.m4 ourselves.

Changelog 

View the full changelog

2007-10-08 Scott James Remnant <email address hidden>

 * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.16.1 since this
 version of gettext is needed for compatibility with Automake 1.10
 * HACKING: Bump version in the docs too.

 * compat/sysv/Makefile.am: Only create symlinks if COMPAT_SYSV is
 enabled, otherwise we leave dangling ones.

 * Makefile.am (ACLOCAL_AMFLAGS): Specify that aclocal install
 ordinarily system-wide macros into m4 (libtool.m4, specifically).
 This makes it easier for packagers to modify autoconfery since
 aclocal is no longer a destructive event.
 * configure.ac (AM_INIT_AUTOMAKE): Increase Automake requirement to
 1.10 to ensure we have aclocal --instal
 * HACKING: Increase Automake version in the docs.

2007-09-21 Scott James Remnant <email address hidden>

 * init/job.c (job_detect_stalled, job_free_deleted): Call job_init()
 on entry, since we don't have a Job pointer passed to us, we need
 to make sure we don't dereference a potentially NULL list.

2007-06-22 Scott James Remnant <email address hidden>

 * init/tests/test_process.c (test_kill): Make sure that all processes
 in the process group are killed, rather than just the lone one.
 * init/process.c (process_kill): Send the signal to all processes
 in the same process group as the pid.
 * init/tests/test_job.c (test_change_state, test_kill_process):
 After spawning a child, call setpgid() to put it in its own process
 group otherwise we could end up TERMing ourselves.

2007-06-12 Scott James Remnant <email address hidden>

 * compat/sysv/shutdown.c: Use nih pidfile functions since they're
 more reliable than doing it ourselves.

2007-06-04 Scott James Remnant <email address hidden>

 * upstart/Makefile.am (libupstart_la_LIBADD): Add $(LTLIBINTL)
 * init/Makefile.am (init_LDADD): Reorder and add $(LTLIBINTL)
 * util/Makefile.am (initctl_LDADD): Reorder and add $(LTLIBINTL)
 * compat/sysv/Makefile.am (reboot_LDADD): Reorder and add $(LTLIBINTL)
 (runlevel_LDADD): add $(LTLIBINTL)
 (shutdown_LDADD): Reorder and add $(LTLIBINTL)
 (telinit_LDADD): Reorder and add $(LTLIBINTL)
 * logd/Makefile.am (logd_LDADD): Add $(LTLIBINTL)

2007-06-03 Scott James Remnant <email address hidden>

 * init/tests/test_job.c (test_run_process): Add a test case for a
 crasher when the event has no arguments.
 * init/job.c (job_run_process): Fix the bug, we need to check the
 arguments before trying to append them.

2007-05-27 Scott James Remnant <email address hidden>

 * init/cfgfile.h (CFG_DIR): Drop this define, since it's in paths.h
 (CfgDirectory):

2007-05-18 Scott James Remnant <email address hidden>

 * init/event.c (event_copy): Use nih_str_array_copy here, to make the
 code somewhat simpler.
 (event_finished): Copy the arguments and environment from the old
 event, rather than stealing and reparenting.
 * init/job.c (job_copy): Use nih_str_array_copy here too.
 (job_run_process): Use nih_str_array_append to add the arguments from
 the emission onto the command run.

 * TODO: Update.

2007-04-24 Scott James Remnant <email address hidden>

 * configure.ac: Add AM_PROG_CC_C_O since we use per-target flags
 for one of the test cases.

2007-03-16 Scott James Remnant <email address hidden>

 * upstart/message.c (upstart_message_newv): Add va_end to match
 va_copy because the standard says so.
 * upstart/wire.c (upstart_push_packv, upstart_pop_packv): Add
 va_end here as well.

2007-03-13 Scott James Remnant <email address hidden>

 * init/main.c: Wait until we've closed inherited standard file
 descriptors and opened the console instead before trying to open the
 control socket; otherwise we end up closing it by accident if we
 weren't opened with sufficient descriptors in the first place.
 Also wait until we've set up the logger before trying to parse the
 configuration. In fact both of these things need to be pretty low
 down the main() function.

 * init/tests/test_job.c (test_run_process): Skip /dev/fd test cases
 if that's not available.

 * init/tests/test_control.c (test_log_priority): Make sure we know
 that the message has been sent before calling the watcher.

 * init/cfgfile.c (cfg_watch_dir): We get ENOSYS for missing inotify
 support, not EOPNOTSUPP.
 * init/tests/test_cfgfile.c (test_watch_dir): Actually make the
 directory tree before testing for inotify, since we use the same
 tree there too.

 * util/initctl.c (job_info_output): Restructure so gcc doesn't think
 name can be used uninitialised.
 * init/tests/test_cfgfile.c (test_watch_dir): Correct an error where
 i wouldn't be initialised if we skipped the inotify tests.

 * util/initctl.c (job_info_output): Restructure so gcc doesn't think
 * init/process.c (process_setup_environment): job id fits inside
 a %u now

 * upstart/message.h: Style; always refer to "unsigned int" as
 "unsigned int", and never "unsigned.
 * upstart/tests/test_message.c (my_handler): Catch a stray couple
 of "unsigned"s

 * init/control.c (control_job_query, control_job_start)
 (control_job_stop): Change type of id argument to unsigned int,
 and call printf with %u to output it.
 * init/tests/test_control.c (check_job, check_job_instance)
 (check_job_instance_end, check_job_status__waiting)
 (check_job_status_end__waiting, check_job_status__starting)
 (check_job_status_end__starting, check_job_status__running)
 (check_job_status_end__running, check_job_status__pre_stop)
 (check_job_status_end__pre_stop, check_job_status__stopping)
 (check_job_status_end__stopping, check_job_status__deleted)
 (check_job_status_end__deleted, check_job_unknown)
 (check_job_invalid, check_job_unchanged, check_event): Change
 type of id arguments to unsigned int.
 (check_list): Change type of id to unsigned int.
 * init/tests/test_notify.c (check_job_status)
 (check_job_status_end, check_job_finished, check_event)
 (check_event_caused, check_event_finished): Change type of id
 arguments to unsigned int.

 * init/job.h (Job): Change the type of the id to unsigned int.
 * init/job.c (job_next_id): Change ids to be unsigned ints, and now
 we can just use %u in the nih_error call.
 (job_find_by_id): Change argument to be unsigned int
 * init/tests/test_job.c (test_find_by_id): Change id type to unsigned
 int.
 * init/event.h (Event): Change the type of the id to unsigned int.
 * init/event.c (event_emit_next_id): Change ids to be unsigned ints,
 and now we can just use %u in the nih_error call.
 (event_emit_find_by_id): Change argument to be unsigned int
 * init/tests/test_event.c (test_emit, test_emit_find_by_id)
 (check_event, check_event_finished): Change id type to unsigned int.

 * util/initctl.c (output_name): Use an unsigned int for the job id,
 which means we can use ordinary %u for the printf argument.
 (handle_job, handle_job_finished, handle_job_instance)
 (handle_job_instance_end, handle_job_status)
 (handle_job_status_end, handle_job_unknown, handle_job_invalid)
 (handle_job_unchanged, handle_event, handle_event_caused)
 (handle_event_finished): Change argument type of id from uint32_t
 to unsigned int.
 (job_info_output): Change output type of id from %zu to %u

 * upstart/message.c (upstart_message_handle): Use unsigned int for
 ids, rather than a fixed-width type.
 * upstart/tests/test_message.c (my_handler): Use unsigned int for
 the ids, and give "unsigned int" instead of "unsigned" to va_arg as
 a matter of style.

 * upstart/wire.c (upstart_push_int, upstart_pop_int): Send over the
 wire using a plain old integer type, instead of a fixed width type;
 there's no advantage to using the fixed-width type and we could hurt
 ourselves if we tried running on ILP64.
 (upstart_push_unsigned, upstart_pop_unsigned): Likewise use a plain
 unsigned int over the wire.
 (upstart_push_string, upstart_pop_string): Use an unsigned int for
 the length of the string, technically this means that we silently
 truncate any string that's greater than 4GB on 64-bit platforms;
 it's either that or make the test cases harder (we did this before
 anyway).
 (upstart_push_header, upstart_pop_header): Type is always an unsigned
 int (best conversion from an enum)

2007-03-11 Scott James Remnant <email address hidden>

 * configure.ac: Bump version to 0.3.9

0 blueprints and 0 bugs targeted

There are no feature specifications or bug tasks targeted to this milestone. The project's maintainer, driver, or bug supervisor can target specifications and bug tasks to this milestone to track the things that are expected to be completed for the release.

This milestone contains Public information
Everyone can see this information.