Proposal: Unify printing the function name in panic messages()

Dag-Erling Smørgrav des at des.no
Wed Feb 13 01:22:41 UTC 2013


Mehmet Erol Sanliturk <m.e.sanliturk at gmail.com> writes:
> My intention was to say a message like the following :
>
> In line < number > in routine < name > the error < name of error > has
> occurred
> called from line < number >  of routine < name > ,
> .
> .
> .
> called from line < number >  of routine < name > .

Keeping track of file names and line numbers for the entire kernel
require huge amounts of space, both on disk and in memory.  For 9.1
amd64, GENERIC + all modules weigh in at 62 MB, while the debugging
symbols (file names, line numbers and variable names) add 267 MB.

Even counting only what's actually in use on a typical machine, like the
one I'm typing on right now, we get 18 MB of code + 80 MB of symbols.

Don't forget that we need debugging symbols for every single line of
code, not just those that call panic(), because a) we want to unwind the
stack from the point where panic() was called and b) pretty much any
non-trivial C statement can potentially trigger a panic due to a bad
pointer or array index, a smashed stack, or any number of reasons.

> In "Witness" mode , a list is displayed by hexadecimal addresses .

and that's all you're going to get...

although when an actual panic occurs, you get a core dump which you can
later examine with a debugger, which will give you far more information
than a simple stack trace.

DES
-- 
Dag-Erling Smørgrav - des at des.no


More information about the freebsd-arch mailing list