untrusted comment: verify with openbsd-68-base.pub
RWQZj25CSG5R2kuNsF98wMzwygBk62Sbp4TEowZI463ll0APctWzOpbaujGnEPbmbh35fwnlzFyso6UGQE8k2Fn/7Wn2/4adAAI=
OpenBSD 6.8 errata 009, December 8, 2020:
Process exit in multithreaded programs could result in the wrong exit
code being reported.
Apply by doing:
signify -Vep /etc/signify/openbsd-68-base.pub -x 009_exit.patch.sig \
-m - | (cd /usr/src && patch -p0)
And then rebuild and install a new kernel:
KK=`sysctl -n kern.osversion | cut -d# -f1`
cd /usr/src/sys/arch/`machine`/compile/$KK
make obj
make config
make
make install
Index: sys/kern/kern_exit.c
===================================================================
RCS file: /cvs/src/sys/kern/kern_exit.c,v
retrieving revision 1.188
diff -u -p -r1.188 kern_exit.c
--- sys/kern/kern_exit.c 18 Mar 2020 15:48:21 -0000 1.188
+++ sys/kern/kern_exit.c 17 Nov 2020 09:12:14 -0000
@@ -140,7 +140,7 @@ exit1(struct proc *p, int xexit, int xsi
single_thread_check(p, 0);
}
- if (flags == EXIT_NORMAL) {
+ if (flags == EXIT_NORMAL && !(pr->ps_flags & PS_EXITING)) {
if (pr->ps_pid == 1)
panic("init died (signal %d, exit %d)", xsig, xexit);