Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Feb 2017 00:34:32 -0500
From:      Lee D <embaudarm@gmail.com>
To:        freebsd-hackers@freebsd.org
Subject:   How approach debugging a kernel crash?
Message-ID:  <CANC_bnOUD1TDdrqYWpn4kw4kva8v4q1tpyUAGmm5bpVEU=RDrA@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Hi,

I am trying to write a custom boot loader for ARM, to replace u-boot and
ubldr.

As I'm working through this, I keep getting kernel crashes.  I've got the
kernel debugger enabled, but doing a backtrace doesn't reveal any useful
information.

How does one go about figuring out exactly what caused an exception?  I
need to know where the kernel crashed so I can figure out what piece of
hardware I haven't set up correctly.

The back trace is just a bunch of abort stuff, and ends in the message
"Unable to unwind into user mode".

I've quoted the backtrace below, and also my kernel message.

Mostly I'm looking for suggestions on how to go about finding the location
of the crash, as I expect to be doing this a lot this week :-)

Thanks!

Lee


db> bt
Tracing pid 0 tid 100000 td 0xc08f8470
db_trace_self() at db_trace_self
         pc = 0xc0669b44  lr = 0xc014c288 (db_hex2dec+0x1f4)
         sp = 0xffff0cb0  fp = 0xffff0cc8
db_hex2dec() at db_hex2dec+0x1f4
         pc = 0xc014c288  lr = 0xc014becc (db_command_loop+0x2f4)
         sp = 0xffff0cd0  fp = 0xffff0d70
         r4 = 0x00000001  r5 = 0x00000000
         r6 = 0xc0704ae6 r10 = 0xc08f6f98
db_command_loop() at db_command_loop+0x2f4
         pc = 0xc014becc  lr = 0xc014bc4c (db_command_loop+0x74)
         sp = 0xffff0d78  fp = 0xffff0d88
         r4 = 0xc06cfe7d  r5 = 0xc06e1e0e
         r6 = 0xc08f6f84  r7 = 0xffff0fa0
         r8 = 0xc08ead98  r9 = 0xc0791060
        r10 = 0xc08ead9c
db_command_loop() at db_command_loop+0x74
         pc = 0xc014bc4c  lr = 0xc014f084 (db_fetch_ksymtab+0x2e8)
         sp = 0xffff0d90  fp = 0xffff0ea8
         r4 = 0x00000807  r5 = 0x00000000
         r6 = 0xc08f6f90 r10 = 0xc08ead9c
db_fetch_ksymtab() at db_fetch_ksymtab+0x2e8
         pc = 0xc014f084  lr = 0xc0341870 (kdb_trap+0x180)
         sp = 0xffff0eb0  fp = 0xffff0ed8
         r4 = 0x00000000  r5 = 0x00000807
         r6 = 0xc08eadb8 r10 = 0xc08ead9c
kdb_trap() at kdb_trap+0x180
         pc = 0xc0341870  lr = 0xc06908b4 (abort_handler+0x678)
         sp = 0xffff0ee0  fp = 0xffff0f00
         r4 = 0xffff0fa0  r5 = 0x00000013
         r6 = 0xffff1030  r7 = 0x00000007
         r8 = 0x00000807  r9 = 0xc08f8470
        r10 = 0xffff0fa0
abort_handler() at abort_handler+0x678
         pc = 0xc06908b4  lr = 0xc0690600 (abort_handler+0x3c4)
         sp = 0xffff0f08  fp = 0xffff0f98
         r4 = 0x00000001  r5 = 0x00000007
         r6 = 0x00000000  r7 = 0x00000807
         r8 = 0x00000013 r10 = 0xffff0fa0
abort_handler() at abort_handler+0x3c4
         pc = 0xc0690600  lr = 0xc066c42c (exception_exit)
         sp = 0xffff0fa0  fp = 0xc0a13e70
         r4 = 0x00000000  r5 = 0xc08f8808
         r6 = 0x00000001  r7 = 0x00000000
         r8 = 0xc08f890c  r9 = 0xc08f8908
        r10 = 0x00002802
exception_exit() at exception_exit
         pc = 0xc066c42c  lr = 0x1000019c (0x1000019c)
         sp = 0xffff1034  fp = 0xc0a13e70
         r0 = 0xc066c534  r1 = 0xc0a0b000
         r2 = 0xffff107c  r3 = 0x20010193
         r4 = 0x00000000  r5 = 0xc08f8808
         r6 = 0x00000001  r7 = 0x00000000
         r8 = 0xc08f890c  r9 = 0xc08f8908
        r10 = 0x00002802 r12 = 0xfefefeff
data_abort_entry() at data_abort_entry+0x30
         pc = 0xc066c534  lr = 0x1000019c (0x1000019c)
         sp = 0xffff1034  fp = 0xc0a13e70
Unable to unwind into user mode

KDB: debugger backends: ddb
KDB: current backend: ddb
Copyright (c) 1992-2016 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 11.0-RELEASE-p1 #27 r309723M: Sat Feb 25 18:51:15 EST 2017
    builder@abe:/usr/home/builder/projects/fbsd_11.0.1/obj/arm.armv6/usr/home/builder/projects/fbsd_11.0.1/src/sys/AXSACM
arm
FreeBSD clang version 3.8.0 (tags/RELEASE_380/final 262564) (based on LLVM
3.8.0)
VT: init without driver.
CPU: Cortex A9-r3 rev 0 (Cortex-A core)
 Supported features: ARM_ISA THUMB2 JAZELLE THUMBEE ARMv4 Security_Ext
 WB enabled LABT branch prediction disabled
LoUU:2 LoC:2 LoUIS:2
Cache level 1:
 32KB/32B 4-way data cache WB Read-Alloc Write-Alloc
 32KB/32B 4-way instruction cache Read-Alloc
real memory  = 535822336 (511 MB)
avail memory = 513486848 (489 MB)
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
random: entropy device external interface
ofwbus0: <Open Firmware Device Tree>
simplebus0: <Flattened device tree simple bus> on ofwbus0
simplebus1: <Flattened device tree simple bus> on ofwbus0
simplebus2: <Flattened device tree simple bus> on ofwbus0
l2cache0: <PL310 L2 cache controller> mem 0xf02000-0xf02fff on simplebus0
l2cache0: cannot allocate IRQ, not using interrupt
l2cache0: Part number: 0x3, release: 0x8
l2cache0: L2 Cache enabled: 512KB/32B 8 ways
gic0: <ARM Generic Interrupt Controller> mem
0xf01000-0xf01fff,0xf00100-0xf001ff on simplebus0
gic0: pn 0x390, arch 0x1, rev 0x2, implementer 0x43b irqs 96
mp_tmr0: <ARM MPCore Timers> mem 0xf00200-0xf002ff,0xf00600-0xf0061f on
simplebus0
Timecounter "MPCore" frequency 325000000 Hz quality 800
Event timer "MPCore" frequency 325000000 Hz quality 1000
zy7_slcr0: <Zynq-7000 slcr block> mem 0-0xfff on simplebus0
zy7_devcfg0: <Zynq devcfg block> mem 0x7000-0x7fff on simplebus0
uart0: <Cadence UART> mem 0x1000-0x1fff on simplebus1
uart0: console (-1,n,8,1)
ehci0: <Zynq-7000 EHCI USB 2.0 controller> mem 0x2000-0x2fff on simplebus1
usbus0: EHCI version 1.0
usbus0: stop timeout
usbus0 on ehci0
gpio0: <Zynq-7000 GPIO driver> mem 0xa000-0xafff on simplebus1
gpiobus0: <GPIO bus> on gpio0
gpioc0: <GPIO controller> on gpio0
cgem0: <Cadence CGEM Gigabit Ethernet Interface> mem 0xb000-0xbfff on
simplebus1
miibus0: <MII bus> on cgem0
rgephy0: <RTL8169S/8110S/8211 1000BASE-T media interface> PHY 0 on miibus0
rgephy0:  none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX,
1000baseT-FDX, 1000baseT-FDX-master, auto
rgephy1: <RTL8169S/8110S/8211 1000BASE-T media interface> PHY 1 on miibus0
rgephy1:  none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX,
1000baseT-FDX, 1000baseT-FDX-master, auto
cgem0: no mac address found, assigning random: 62:73:64:b9:65:d2
cgem0: Ethernet address: 62:73:64:b9:65:d2
sdhci_fdt0: <Zynq-7000 generic fdt SDHCI controller> mem 0x100000-0x100fff
on simplebus1
sdhci_fdt0: 1 slot(s) allocated
mmc0: <MMC/SD bus> on sdhci_fdt0
sdhci_fdt1: <Zynq-7000 generic fdt SDHCI controller> mem 0x101000-0x101fff
on simplebus1
sdhci_fdt1: 1 slot(s) allocated
mmc1: <MMC/SD bus> on sdhci_fdt1
cryptosoft0: <software crypto>
Fatal kernel mode data abort: 'Translation Fault (L2)' on write
trapframe: 0xffff0fa0
FSR=00000807, FAR=ffff1030, spsr=20010193
r0 =c066c534, r1 =c0a0b000, r2 =ffff107c, r3 =20010193
r4 =00000000, r5 =c08f8808, r6 =00000001, r7 =00000000
r8 =c08f890c, r9 =c08f8908, r10=00002802, r11=c0a13e70
r12=fefefeff, ssp=ffff1034, slr=1000019c, pc =c066c534

[ thread pid 0 tid 100000 ]
Stopped at      data_abort_entry+0x30:  str     r0, [r13, -#0x004]!



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