svn commit: r325386 - head/sys/kern

Mateusz Guzik mjguzik at gmail.com
Sun Nov 5 20:26:26 UTC 2017


On Sun, Nov 5, 2017 at 9:15 PM, Konstantin Belousov <kostikbel at gmail.com>
wrote:

> On Sun, Nov 05, 2017 at 12:37:50PM -0700, Ian Lepore wrote:
> > IMO, the only reason ASSERT-style macros exist is to hide the
> > conditional-on-build-type part of the operation.  That is, to avoid
> > having #ifdef INVARIANTS scattered everywhere.
> bde' point is that KASSERT() is badly designed, and I agree with him.
> Now we could at least remove the () around the message formatting part,
> but it is too late.
>
> >
> > Creating a macro to generate always-on error detection and reporting
> > code just because there exists a macro to do so conditionally seems to
> > turn the world on its head.
> I agree with this statement.  if()panic(); construct is good enough, IMO.
>

I don't like our panic messages whatsoever, they are quite often not
informative.

For instance consider:
if (obj->foo < bar)
    panic("bad foo %d, have fun looking for bar");

Instead a macro akin to PASS(obj->foo, <, bar, "obj %p", obj); can
expand itself to stringify the first 3 terms and also show the compared
values. Saves on boiler-plate written by hand.

I think *all* panics should be accompanied with a linux's oops-like dump.

I'm not volunteering for any of it though.

-- 
Mateusz Guzik <mjguzik gmail.com>


More information about the svn-src-all mailing list