Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Sep 2010 08:17:01 -0700
From:      mdf@FreeBSD.org
To:        Andriy Gapon <avg@freebsd.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r212964 - head/sys/kern
Message-ID:  <AANLkTi=CTr%2BZDs3znsF-SXDp__xxbetjnhSBxiDhfFYy@mail.gmail.com>
In-Reply-To: <201009211507.o8LF7iVv097676@svn.freebsd.org>
References:  <201009211507.o8LF7iVv097676@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Sep 21, 2010 at 8:07 AM, Andriy Gapon <avg@freebsd.org> wrote:
> Author: avg
> Date: Tue Sep 21 15:07:44 2010
> New Revision: 212964
> URL: http://svn.freebsd.org/changeset/base/212964
>
> Log:
> =A0kdb_backtrace: stack(9)-based code to print backtrace without any back=
end
>
> =A0The idea is to add KDB and KDB_TRACE options to GENERIC kernels on
> =A0stable branches, so that at least the minimal information is produced
> =A0for non-specific panics like traps on page faults.
> =A0The GENERICs in stable branches seem to already include STACK option.
>
> =A0Reviewed by: =A0attilio
> =A0MFC after: =A0 =A02 weeks
>
> Modified:
> =A0head/sys/kern/subr_kdb.c
>
> Modified: head/sys/kern/subr_kdb.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/sys/kern/subr_kdb.c =A0 =A0Tue Sep 21 12:57:43 2010 =A0 =A0 =A0 =
=A0(r212963)
> +++ head/sys/kern/subr_kdb.c =A0 =A0Tue Sep 21 15:07:44 2010 =A0 =A0 =A0 =
=A0(r212964)
> @@ -28,6 +28,7 @@
> =A0__FBSDID("$FreeBSD$");
>
> =A0#include "opt_kdb.h"
> +#include "opt_stack.h"
>
> =A0#include <sys/param.h>
> =A0#include <sys/systm.h>
> @@ -37,6 +38,7 @@ __FBSDID("$FreeBSD$");
> =A0#include <sys/pcpu.h>
> =A0#include <sys/proc.h>
> =A0#include <sys/smp.h>
> +#include <sys/stack.h>
> =A0#include <sys/sysctl.h>
>
> =A0#include <machine/kdb.h>
> @@ -300,6 +302,15 @@ kdb_backtrace(void)
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0printf("KDB: stack backtrace:\n");
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0kdb_dbbe->dbbe_trace();
> =A0 =A0 =A0 =A0}
> +#ifdef STACK
> + =A0 =A0 =A0 else {
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 struct stack st;
> +
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 printf("KDB: stack backtrace:\n");
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 stack_save(&st);
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 stack_print(&st);

I'd recommend using stack_print_ddb(), as that avoids any locking
which may hang depending on how the kernel panic'd.

Thanks,
matthew

> + =A0 =A0 =A0 }
> +#endif
> =A0}
>
> =A0/*
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTi=CTr%2BZDs3znsF-SXDp__xxbetjnhSBxiDhfFYy>