diff options
author | marius <marius@FreeBSD.org> | 2009-08-26 21:10:47 +0000 |
---|---|---|
committer | marius <marius@FreeBSD.org> | 2009-08-26 21:10:47 +0000 |
commit | 931a88ff68b2b0743861c9897de3dab0a579e8df (patch) | |
tree | bb02b8362a39953988a22e706de9e6eeefb9a2ad /sys/kern | |
parent | 6e8f2df92e2b3d946ed006f8f27144134d5f782b (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/kern/kern_exit.c | 7 |
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!"); |