vm_fault during BBB-boot

Ian Lepore ian at freebsd.org
Sun Dec 28 19:36:29 UTC 2014


On Sun, 2014-12-28 at 19:46 +0100, Manuel Stühn wrote:
> Am 28.12.2014 um 18:57 schrieb Ian Lepore:
> > I can't reproduce this on my BBB.  I sync'd to the exact rev you used
> > and rebuilt, installed it all on an sdcard and booted, and I boot all
> > the way to the login prompt.  I even diff'd my boot messages against the
> > ones you posted and there are no significant differences other than
> > pathnames and compile times.
> >
> > Maybe a stack backtrace would help... enter 'bt' at that db> prompt and
> > post the output (everything from the vm_fault(...)-> 1 to the end of the
> > backtrace).
> 
> [...]
> mmcsd0: 8GB <SDHC SD08G 3.8 SN C240108F MFG 06/2009 by 2 TM> at mmc0 
> 48.0MHz/4bit/65535-block
> 
> vm_fault(0xc0788e48, 0, 1, 0) -> 1
> Fatal kernel mode data abort: 'Translation Fault (S)'
> trapframe: 0xdd0cbc60
> FSR=00000005, FAR=00000010, spsr=00000113
> r0 =00000000, r1 =00000004, r2 =00003d2e, r3 =00000137
> r4 =c2be4180, r5 =c2be4180, r6 =c078876c, r7 =c0869a24
> r8 =028f5c28, r9 =c0713d48, r10=00000000, r11=dd0cbcb0
> r12=00000001, ssp=dd0cbcb0, slr=00101010, pc =c0377d64
> 
> [ thread pid 12 tid 100006 ]
> Stopped at      _sx_assert+0x48:        ldr     r14, [r0, #0x010]
> db> bt
> Tracing pid 12 tid 100006 td 0xc2a7d660
> db_trace_self() at db_trace_self
>           pc = 0xc05c43d4  lr = 0xc02324d0 (db_stack_trace+0x108)
>           sp = 0xdd0cb960  fp = 0xdd0cb978
>          r10 = 0xc0787b70
> db_stack_trace() at db_stack_trace+0x108
>           pc = 0xc02324d0  lr = 0xc0231e28 (db_command+0x294)
>           sp = 0xdd0cb980  fp = 0xdd0cba20
>           r4 = 0x00000000  r5 = 0x00000000
>           r6 = 0x00000000
> db_command() at db_command+0x294
>           pc = 0xc0231e28  lr = 0xc0231b80 (db_command_loop+0x78)
>           sp = 0xdd0cba28  fp = 0xdd0cba38
>           r4 = 0xc060cef5  r5 = 0xc062832d
>           r6 = 0xc0787b5c  r7 = 0xc06cfce8
>           r8 = 0xc07235e4  r9 = 0xc07235e0
>          r10 = 0x00000001
> db_command_loop() at db_command_loop+0x78
>           pc = 0xc0231b80  lr = 0xc0234698 (db_trap+0x108)
>           sp = 0xdd0cba40  fp = 0xdd0cbb60
>           r4 = 0x00000000  r5 = 0xc0787b68
>           r6 = 0xc0723608
> db_trap() at db_trap+0x108
>           pc = 0xc0234698  lr = 0xc03a8c38 (kdb_trap+0xd4)
>           sp = 0xdd0cbb68  fp = 0xdd0cbb88
>           r4 = 0x00000000  r5 = 0x00000005
>           r6 = 0xc0723608  r7 = 0xc06cfce8
> kdb_trap() at kdb_trap+0xd4
>           pc = 0xc03a8c38  lr = 0xc05d9464 (dab_fatal+0x1c0)
>           sp = 0xdd0cbb90  fp = 0xdd0cbba8
>           r4 = 0xdd0cbc60  r5 = 0x00000005
>           r6 = 0x600001d3  r7 = 0x00000010
>           r8 = 0xc2a7d660  r9 = 0xdd0cbc60
>          r10 = 0x00000001
> dab_fatal() at dab_fatal+0x1c0
>           pc = 0xc05d9464  lr = 0xc05d91a4 (abort_handler+0x66c)
>           sp = 0xdd0cbbb0  fp = 0xdd0cbc58
>           r4 = 0x00000005  r5 = 0x00000001
>           r6 = 0xc0788e48  r7 = 0xdd0cbea0
> abort_handler() at abort_handler+0x66c
>           pc = 0xc05d91a4  lr = 0xc05c61e0 (exception_exit)
>           sp = 0xdd0cbc60  fp = 0xdd0cbcb0
>           r4 = 0xc2be4180  r5 = 0xc2be4180
>           r6 = 0xc078876c  r7 = 0xc0869a24
>           r8 = 0x028f5c28  r9 = 0xc0713d48
>          r10 = 0x00000000
> exception_exit() at exception_exit
>           pc = 0xc05c61e0  lr = 0x00101010 (0x101010)
>           sp = 0xdd0cbcb0  fp = 0xdd0cbcb0
>           r0 = 0x00000000  r1 = 0x00000004
>           r2 = 0x00003d2e  r3 = 0x00000137
>           r4 = 0xc2be4180  r5 = 0xc2be4180
>           r6 = 0xc078876c  r7 = 0xc0869a24
>           r8 = 0x028f5c28  r9 = 0xc0713d48
>          r10 = 0x00000000 r12 = 0x00000001
> _sx_assert() at _sx_assert+0x48
>           pc = 0xc0377d64  lr = 0xc085e4d0 ($a+0x54)
>           sp = 0xdd0cbcb8  fp = 0xdd0cbdb8
> Unknown entry: 0
> $a() at $a+0x54
>           pc = 0xc085e4d0  lr = 0xc085e4d0 ($a+0x54)
>           sp = 0xdd0cbcb8  fp = 0xdd0cbdb8
> Unable to unwind into user mode
> db>

Well that didn't really help at all, because that output is crazy.  It
says it can't unwind into user mode, but the PC in the last frame isn't
from usermode, it's an address beyond the end of the kernel code.  I
have a feeling that "unknown entry" is why the backtrace is broken.

So all in all, I'm out of ideas.  We should have nearly identical
setups, except I didn't build with crochet, and thus I'm probably using
a slightly different u-boot (a bit newer probably).  I don't see how
that could lead to working vs. failing at this point.

-- Ian




More information about the freebsd-arm mailing list