freebsd-dev/usr.sbin/bsdinstall
Jessica Clarke a45048565a bsdinstall: Fix race condition when shutting down after installation
Whilst reboot(8) will block whilst it runs, shutdown(8) does not,
daemonizing instead. This means that we must wait after running it,
otherwise we will exit and cause the system to attempt to go multi-user
in parallel with the shutdown daemon killing init. With the new
multi-console support in the installer, runconsoles will immediately
kill this daemon, racing with the daemon being able to signal init as
desired, and I have seen this race be lost in QEMU with a single CPU. In
the past this wasn't such an issue, since shutdown's daemon puts itself
in a new session group immediately after fork (and the parent doesn't
wait until that has happened, so whilst there's technically a race
condition in there where it could receive a SIGHUP from the death of the
parent's session leader, in practice this is very unlikely to be hit.
This means that the only consequence of this oversight before was that
you might get the beginnings of more console output on the way to
multi-user and thus the console would look a little confusing.

Reviewed by:	gjb
Fixes:		e4505364c0 ("release/rc.local: Provide option to shutdown after installation complete")
Fixes:		a09af1b7fd ("bsdinstall release: Start installer on multiple consoles")
Differential Revision:	https://reviews.freebsd.org/D36879
2022-10-06 20:04:04 +01:00
..
distextract bsdinstall: allow whitelabeling the installer 2022-05-13 10:35:43 -06:00
distfetch bsdinstall: allow whitelabeling the installer 2022-05-13 10:35:43 -06:00
partedit bsdinstall: allow whitelabeling the installer 2022-05-13 10:35:43 -06:00
runconsoles bsdinstall: Add a new runconsoles helper binary 2022-10-03 17:09:16 +01:00
scripts bsdinstall: add hooks to allow for easier customizing the install 2022-10-03 09:50:42 -06:00
bsdinstall bsdinstall: Use TMPDIR if set 2020-01-15 00:45:05 +00:00
bsdinstall.8 bsdinstall: allow setting the root password via env variables 2022-08-05 09:10:21 -06:00
Makefile bsdinstall release: Move code to a new startbsdinstall wrapper 2022-10-03 17:09:16 +01:00
Makefile.depend
Makefile.inc
startbsdinstall bsdinstall: Fix race condition when shutting down after installation 2022-10-06 20:04:04 +01:00