From owner-svn-src-all@freebsd.org Tue Apr 24 19:10:52 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 017EAFB0068; Tue, 24 Apr 2018 19:10:52 +0000 (UTC) (envelope-from cem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A41817639C; Tue, 24 Apr 2018 19:10:51 +0000 (UTC) (envelope-from cem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 9F25F172A2; Tue, 24 Apr 2018 19:10:51 +0000 (UTC) (envelope-from cem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3OJApPw089228; Tue, 24 Apr 2018 19:10:51 GMT (envelope-from cem@FreeBSD.org) Received: (from cem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3OJApeD089227; Tue, 24 Apr 2018 19:10:51 GMT (envelope-from cem@FreeBSD.org) Message-Id: <201804241910.w3OJApeD089227@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cem set sender to cem@FreeBSD.org using -f From: Conrad Meyer Date: Tue, 24 Apr 2018 19:10:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r332962 - head/sys/kern X-SVN-Group: head X-SVN-Commit-Author: cem X-SVN-Commit-Paths: head/sys/kern X-SVN-Commit-Revision: 332962 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Apr 2018 19:10:52 -0000 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