Author: cem Date: Tue Apr 24 19:10:51 2018 New Revision: 332962 URL: https://svnweb.freebsd.org/changeset/base/332962
Log: Do not totally silence suppressed secondary kasserts unless debug.kassert.do_log is disabled To totally silence and ignore secondary kassert violations after a primary panic, set debug.kassert.do_log=0 and debug.kassert.suppress_in_panic=1. Additional assertion warnings shouldn't block core dump and may alert the developer to another erroneous condition. Secondary stack traces may be printed, identically to the unsuppressed case where panic() is reentered -- controlled via debug.trace_all_panics. Sponsored by: Dell EMC Isilon Modified: head/sys/kern/kern_shutdown.c Modified: head/sys/kern/kern_shutdown.c ============================================================================== --- head/sys/kern/kern_shutdown.c Tue Apr 24 19:09:53 2018 (r332961) +++ head/sys/kern/kern_shutdown.c Tue Apr 24 19:10:51 2018 (r332962) @@ -718,13 +718,24 @@ kassert_panic(const char *fmt, ...) static char buf[256]; va_list ap; - /* If we already panic'd, don't create a double-fault. */ - if (panicstr != NULL && kassert_suppress_in_panic) - return; - va_start(ap, fmt); (void)vsnprintf(buf, sizeof(buf), fmt, ap); va_end(ap); + + /* + * If we are suppressing secondary panics, log the warning but do not + * re-enter panic/kdb. + */ + if (panicstr != NULL && kassert_suppress_in_panic) { + if (kassert_do_log) { + printf("KASSERT failed: %s\n", buf); +#ifdef KDB + if (trace_all_panics && trace_on_panic) + kdb_backtrace(); +#endif + } + return; + } /* * panic if we're not just warning, or if we've exceeded _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"