svn commit: r216823 - head/sbin/shutdown

Jilles Tjoelker jilles at stack.nl
Sat Jan 1 00:34:55 UTC 2011


On Fri, Dec 31, 2010 at 11:31:14PM +0100, Erik Trulsson wrote:
> On Fri, Dec 31, 2010 at 07:00:58PM +0000, Alexander Best wrote:
> > another thought: running 'reboot' instead of 'shutdown -r now' *can* cause
> > harm to the system, because an important rc.shutdown script wasn't executed.
> > however running 'shutdown -r now' in single-user mode e.g. will cause a few
> > sterr warnings; however it *cannot* cause any harm.

> Oh, yes, it can! (And I have been burnt by it once, after which I got
> very careful about not using 'shutdown -r now' from single user mode.)

> Take a look at /etc/rc.d/mixer
> At shutdown it saves the current state of the soundcard mixer values
> into a file and at start it restores the mixer values from that file.
> If you boot into single user mode the start function will of course not
> be executed leaving the mixer values at their default values.  If you
> then use 'shutdown' these default values are what will be saved,
> overwriting whatever values had been saved before, while if you had
> instead had used 'reboot' the old saved values would have been left
> untouched.
> If you never change the mixer values from their defaukt you won't notice
> anything, but otherwise it might take a while to figure out why the
> sound is at the 'wrong' volume.

> This is one example I have found where bad things can happen if you use
> 'shutdown' when you should have used 'reboot'.  I am fairly sure that
> there are other instances that I just haven't run into (yet.)

Yes, but I consider this a bug in either init or the rc system. The
problem already exists if shutdown is used from single-user.
Ctrl+Alt+Del also signals init, causing proper shutdown from multi-user
but mixer value loss from single-user.

If it is a bug in init, init should not run rc.shutdown when it has not
run any /etc/rc things, in the assumption that rc.shutdown shuts down
the things that /etc/rc has started. Furthermore, this seems reasonable
because rc.shutdown is also run when the system goes from multi-user to
single-user; it seems strange to run it another time when the system
goes down from single-user.

If it is a bug in /etc/rc.d/mixer, /etc/rc.d/mixer should somehow track
if it has been started, and ignore any stops if not. This seems less
general than changing init.

If it is a bug in /etc/rc, it should do the above tracking somehow for
all scripts.

-- 
Jilles Tjoelker


More information about the svn-src-head mailing list