'telinit u' has a cage fight with busybox init
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
upstart |
Fix Released
|
Medium
|
James Hunt | ||
upstart (Ubuntu) |
Fix Released
|
Medium
|
James Hunt | ||
Raring |
Fix Released
|
Medium
|
James Hunt |
Bug Description
A number of packages (e.g. eglibc, libsepol) use 'telinit -u' in their postinst to request that the init daemon be restarted. Now, in Ubuntu we've generally hacked these to use 'touch /var/run/
However, there's another problem. 'telinit -u' sends SIGTERM to pid 1. This amounts to a private IPC method, but it is not one agreed upon by all init daemons. busybox init (not unreasonably, I think) defines SIGTERM to mean "reboot", and busybox init is used by debian-installer. This means that if we were ever to produce a Debian installer image that installed Upstart by default - which is certainly something we want to attempt once it's worthwhile - it will reboot as soon as it tries to configure any of the affected packages.
Perhaps telinit should check whether pid 1 is in fact Upstart before sending these signals? Or perhaps it should use some other IPC mechanism.
Related branches
- Daniël Sonck: Approve
-
Diff: 18561 lines (+11017/-1183) (has conflicts)73 files modified.bzrignore (+4/-0)
ChangeLog (+365/-0)
Makefile.am (+1/-1)
NEWS (+35/-1)
TESTING.sessions (+289/-0)
conf/rc-sysinit.conf (+2/-0)
configure.ac (+7/-3)
contrib/bash_completion/upstart (+96/-36)
contrib/vim/syntax/upstart.vim (+61/-27)
dbus/Upstart.conf (+6/-36)
dbus/com.ubuntu.Upstart.xml (+7/-0)
dbus/upstart.h (+1/-1)
extra/Makefile.am (+125/-0)
extra/conf/upstart-socket-bridge.conf (+16/-0)
extra/conf/upstart-udev-bridge.conf (+16/-0)
extra/man/socket-event.7 (+92/-0)
extra/man/upstart-socket-bridge.8 (+47/-0)
extra/man/upstart-udev-bridge.8 (+57/-0)
extra/upstart-socket-bridge.c (+644/-0)
extra/upstart-udev-bridge.c (+310/-0)
init/Makefile.am (+12/-0)
init/conf.c (+504/-55)
init/conf.h (+45/-2)
init/control.c (+111/-19)
init/control.h (+19/-1)
init/environ.c (+0/-1)
init/environ.h (+0/-1)
init/event.c (+22/-0)
init/event.h (+6/-1)
init/event_operator.c (+59/-0)
init/event_operator.h (+8/-0)
init/job.c (+47/-3)
init/job.h (+4/-1)
init/job_class.c (+115/-67)
init/job_class.h (+62/-2)
init/job_process.c (+122/-14)
init/job_process.h (+5/-3)
init/main.c (+297/-134)
init/man/init.5 (+236/-48)
init/man/init.8 (+32/-4)
init/parse_conf.c (+6/-0)
init/parse_job.c (+21/-7)
init/parse_job.h (+4/-2)
init/paths.h (+75/-2)
init/session.c (+320/-0)
init/session.h (+89/-0)
init/tests/test_blocked.c (+4/-1)
init/tests/test_conf.c (+1310/-15)
init/tests/test_control.c (+15/-11)
init/tests/test_environ.c (+3/-1)
init/tests/test_event.c (+28/-25)
init/tests/test_event_operator.c (+3/-0)
init/tests/test_job.c (+71/-76)
init/tests/test_job_class.c (+56/-65)
init/tests/test_job_process.c (+34/-30)
init/tests/test_parse_conf.c (+3/-0)
init/tests/test_parse_job.c (+302/-260)
init/tests/test_process.c (+3/-0)
init/tests/test_system.c (+3/-0)
po/POTFILES.in (+2/-0)
po/upstart.pot (+352/-155)
scripts/Makefile.am (+25/-0)
scripts/init-checkconf.sh (+248/-0)
scripts/initctl2dot.py (+571/-0)
scripts/man/init-checkconf.8 (+73/-0)
scripts/man/initctl2dot.8 (+87/-0)
util/Makefile.am (+1/-1)
util/initctl.c (+1014/-17)
util/initctl.h (+458/-0)
util/man/initctl.8 (+207/-34)
util/reboot.c (+0/-1)
util/tests/test_initctl.c (+1189/-19)
util/tests/test_user_sessions.sh (+553/-0)
Changed in upstart (Ubuntu): | |
status: | New → Incomplete |
status: | Incomplete → Triaged |
importance: | Undecided → Medium |
Changed in upstart: | |
assignee: | nobody → James Hunt (jamesodhunt) |
Changed in upstart (Ubuntu Raring): | |
assignee: | nobody → James Hunt (jamesodhunt) |
Changed in upstart: | |
status: | Triaged → In Progress |
Changed in upstart: | |
status: | In Progress → Fix Released |
Changed in upstart (Ubuntu Raring): | |
status: | Triaged → Fix Released |
Since we are hoping to obsolete the /var/run/ init.upgraded interface now that we have stateful re-exec capabilities, this should be fixed for raring.