Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 09 Feb 2013 10:15:33 -0700
From:      Ian Lepore <ian@FreeBSD.org>
To:        Andriy Gapon <avg@FreeBSD.org>
Cc:        Kirk McKusick <mckusick@mckusick.com>, Christoph Mallon <christoph.mallon@gmx.de>, freebsd-arch@FreeBSD.org
Subject:   Re: Proposal: Unify printing the function name in panic messages()
Message-ID:  <1360430133.4545.68.camel@revolution.hippie.lan>
In-Reply-To: <5116121E.1010601@FreeBSD.org>
References:  <51141E33.4080103@gmx.de> <511426B8.2070800@FreeBSD.org> <51160E06.1070404@gmx.de>  <5116121E.1010601@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 2013-02-09 at 11:08 +0200, Andriy Gapon wrote:
> on 09/02/2013 10:51 Christoph Mallon said the following:
> > On 07.02.2013 23:12, Andriy Gapon wrote:
> >> on 07/02/2013 23:35 Christoph Mallon said the following:
> >>> panic("just a message");
> >>
> >> This seems perfect.
> >> Panic without at least a stack trace or preferably a crash dump is practically
> >> useless in most cases.  A stack trace already has all the function names.
> >> So a function name in a message seems to be redundant.
> > 
> > This is nice in theory, but infeasible in practice.
> > More than half of the panic() calls include the correct function name in a way or another.
> > I estimate, that another quarter show a wrong name.
> 
> In any case, you just search the code for the message and that's it.
> I don't suppose that there are many duplicates there.
> 

Exactly.  The use of sufficiently descriptive messages is all that's
necessary for finding the source of a panic or other error.  It has
taken me over 30 years to come around to this way of thinking, but
during the past 5 years of working in a shop with a large source base
and no file/line numbers in the logging, I've seen the light.

What I've found to be the far bigger modern problem is not finding the
source of a given message in the code, but rather finding out WHO said
it, given the growing ubiquity of multi-threaded code.

-- Ian

> > It is hard to get this number mechanically, because, well, the names are wrong.
> > So most calls include the name (or try to).
> > Having no function name is a minority.
> > I plan to correct and unify this hotchpotch.
> > Also, if stack traces are disabled, you at least can reliably determine, where the panic came from.
> 
> Even if you can determine that, without more debugging data that would be
> useless in most cases.  (We paniced because something went wrong, but why did it
> happen?)
> 
> > Finally, you can turn the names on and off with one central switch.
> 
> Well, have you experienced any problems with debugging due to those
> (absent/misleading) function names?  Or do you see many reports about such problems?
> 
> If this is a solution in search of a problem, then I don't like it, because it
> requires massive, if mostly mechanical, changes throughout the code.
> 
> If panic message like ("invalid value of bar") were to be changed to something
> like ("invalid value of bar (%foo)", bar) I would find that to be a far more
> useful project.
> 





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1360430133.4545.68.camel>