Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 21 Jan 2004 16:40:46 +1100 (EST)
From:      Bruce Evans <bde@zeta.org.au>
To:        Nate Lawson <nate@root.org>
Cc:        cvs-all@FreeBSD.org
Subject:   Re: backtrace() and the console log (was Re: cvs commit: src/sys/alpha...)
Message-ID:  <20040121162731.F7489@gamplex.bde.org>
In-Reply-To: <20040120203001.B99547@root.org>
References:  <200401210148.aa95501@salmon.maths.tcd.ie> <20040120203001.B99547@root.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 20 Jan 2004, Nate Lawson wrote:

> On Wed, 21 Jan 2004, Ian Dowse wrote:
> > I've been using the following patch for a while to get backtrace()
> > to output to the kernel message buffer. Sending all ddb output via
> > printf might be undesirable for some cases, but I guess having it
> > configurable with a `debug.ddb_use_printf' sysctl that defaults to
> > the old behaviour would be ok?

It's undesireable in almost all cases, since it fills up the message
buffer with garbage.

> Can't you just check that you aren't in DDB before printing to the message
> buf?
>
> Like this:
>
> if (boothowto & RB_KDB) {
>    normal behavior to console via cnputc()
> } else {
>    print to message buf instead
> }

Something like that would be correct (test db_active, not boothowto...).

Another bug in backtrace() with the same cause (using a ddb function
in non-ddb-context) is that if it causes a page fault then the page
fault should be trapped like ddb does it, but ddb's jmp_buf for this
is not initialized or has garbage from a previous initialization.

Bruce



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