summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_exit.c
diff options
context:
space:
mode:
authormarius <marius@FreeBSD.org>2009-08-26 21:10:47 +0000
committermarius <marius@FreeBSD.org>2009-08-26 21:10:47 +0000
commit931a88ff68b2b0743861c9897de3dab0a579e8df (patch)
treebb02b8362a39953988a22e706de9e6eeefb9a2ad /sys/kern/kern_exit.c
parent6e8f2df92e2b3d946ed006f8f27144134d5f782b (diff)
downloadFreeBSD-src-931a88ff68b2b0743861c9897de3dab0a579e8df.zip
FreeBSD-src-931a88ff68b2b0743861c9897de3dab0a579e8df.tar.gz
Add a temporary workaround which just lets init die instead of
causing a panic if it is killed due to a unsolved stack overflow seen very late during shutdown on sparc64 when the gmirror worker process exists, which is a regression introduced in 8.0. Reviewed by: kib MFC after: 3 days
Diffstat (limited to 'sys/kern/kern_exit.c')
-rw-r--r--sys/kern/kern_exit.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c
index 36a074d..39b48e0 100644
--- a/sys/kern/kern_exit.c
+++ b/sys/kern/kern_exit.c
@@ -131,7 +131,12 @@ exit1(struct thread *td, int rv)
mtx_assert(&Giant, MA_NOTOWNED);
p = td->td_proc;
- if (p == initproc) {
+ /*
+ * XXX in case we're rebooting we just let init die in order to
+ * work around an unsolved stack overflow seen very late during
+ * shutdown on sparc64 when the gmirror worker process exists.
+ */
+ if (p == initproc && rebooting == 0) {
printf("init died (signal %d, exit %d)\n",
WTERMSIG(rv), WEXITSTATUS(rv));
panic("Going nowhere without my init!");
OpenPOWER on IntegriCloud