cvs commit: src/sys/alpha/alpha support.s src/sys/i386/i386 swtch.s src/sys/kern kern_shutdown.c src/sys/sys systm.h

Marcel Moolenaar marcel at xcllnt.net
Tue Feb 17 17:00:35 PST 2004


On Wed, Feb 18, 2004 at 09:43:16AM +1100, Bruce Evans wrote:
> >
> > Alternatively, we could extend KASSERT to emit a file and line
> > number like assert(3) and instead of panic(). Seems very logical
> > to me.
> 
> That feature was intentionally left out when KASSERT() was designed.
> For some reason, we decided to give the invoker of KASSERT() complete
> control over the message contents (unlike in userland where the message
> is the condition stingized and followed by __FILE__ and __LINE__.
> Presumably this was partly to permit use of existing panic messages
> verbatim.  I'm not completely happy with the results of this at any
> level, especially at the source level.  It requires and ugly syntax
> (another layer of parentheses around the message), and is harder to
> write and can be harder to read (writers have to think about what to
> put in the message; it's normal to invert the sense of the assertion
> and not unknown to make logic errors doing so; then readers don't
> see the original condition in the panic message).

I tend to agree. Most of the KASSERTs I put in have the bogus message
"foo", simply because I cannot explain in a single sentence what's
wrong and I don't want to break my flow of thinking while coding to
come up with something. Hence, I either use a bogus "foo" or forget
about the KASSERT altogether. The former is less bad than the latter,
but not good at all.
I prefer to put a comprehensive comment in front of the KASSERT and
have people look there by having the KASSERT emit the file and line.
The panic message that's the result of the failed assertion can be
constant and should inform that the panic is the result of KASSERT.
Alternatively, it can print the condition that failed.

phk's change gave me the file and line, so it gave me something I
liked. If that's going to be reverted, maybe people won't object to
having KASSERT emit the file and line and no specific panic message
at all?

-- 
 Marcel Moolenaar	  USPA: A-39004		 marcel at xcllnt.net


More information about the cvs-src mailing list