Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 May 2016 09:04:41 -0700
From:      Alfred Perlstein <alfred@freebsd.org>
To:        freebsd-arch@freebsd.org
Subject:   Re: KASSERT: always assert; KWARN
Message-ID:  <ca489ff1-f520-3feb-0525-425eb015af7a@freebsd.org>
In-Reply-To: <CAG6CVpWzuK6cZx3QnQhKOu=6GZBJF4cJQdNXgJZeXYhuJJANJg@mail.gmail.com>
References:  <CAG6CVpWzuK6cZx3QnQhKOu=6GZBJF4cJQdNXgJZeXYhuJJANJg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 5/10/16 6:24 PM, Conrad Meyer wrote:

> Thoughts or objections?  Does anyone like the ability to opt out of
> invariants asserts?

Yes.

During my time at iXsystems we used this facility several times to get a 
log from a customer site with a number of "kasserts".

The reason we did this was multiple reasons:
1) We needed to ship a kernel with asserts enabled.
2) When we did, the first assert hit was:
     a) In an unrelated module and not relevant.
     b) Not enough information came back from just the first assert.
3) We found it more useful to get multiple errors back from a customer 
in one trip rather than one fix at a time.  Unfortunately one fix at a 
time would have had us lose the customer.

The KASSERT/assert system is very, very, very useful.  However if you 
are at a last resort sending a debug kernel (with Kassert enabled) and 
do not get enough information back then you will lose that customer.

I understand that a few vocal folks are upset, like seriously, seriously 
upset, however at the time this was the only way we could effectively 
debug a customer problem and my hope was that others could make use of 
it as well.

Linux has had a similar functionality for many years.  In Linux there is 
the kernel "oops()" which does nearly the same thing.

Initially I mocked Linux's "oops" for being silly and "wrong", using the 
exact same reasons that many have used to dislike "kassert_warn".  
However once I was responsible for an extremely pissed off customer who 
was paying us quite a sum of money AND I was not getting enough 
information back, I changed my mind.

https://en.wikipedia.org/wiki/Linux_kernel_oops


-Alfred



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?ca489ff1-f520-3feb-0525-425eb015af7a>