Beaglebone Black: crash during portsnap extract

Ian Lepore ian at FreeBSD.org
Fri Feb 21 15:41:48 UTC 2014


On Sat, 2014-02-22 at 01:57 +1100, Jason Birch wrote:
> I think `portsnap fetch` is sufficient to trigger this with the snapshots
> from Feb 16th.
> 
>     $ uname -a
>     FreeBSD beaglebone 11.0-CURRENT FreeBSD 11.0-CURRENT #0 r261948: Sun
> Feb 16 18:05:23 UTC 2014
> root at grind.freebsd.org:/usr/obj/arm.armv6/usr/src/sys/BEAGLEBONE
>  arm
> 
>     [ via ssh ]
>     # portsnap fetch
>     Looking up portsnap.FreeBSD.org mirrors... none found.
>     Fetching snapshot tag from portsnap.FreeBSD.org... done.
>     Fetching snapshot metadata... done.
>     Fetching snapshot generated at Fri Feb 21 00:01:19 UTC 2014:
>     226ed4090b222d40e48a3ad2f610dd81bef3c38f53deeb100% of   69 MB  659 kBps
> 01m47s
>     Extracting snapshot...
>     [ Halts here ]
> 
>     [ Over in the UART world ]
>     mmcsd0: Error indicated: 1 Timeout
>     mmcsd0: Error indicated: 4 Failed
>     mmcsd0: Error indicated: 4 Failed
>     ... [ 30 identical lines omitted] ...
>     mmcsd0: Error indicated: 4 Failed
>     mmcsd0: Error indicated: 4 Failed
>     mmcsd0: Error indicag_vfs_done():mmcsd0s2a[WRITE(offset=998113280,
> length=16384)]error = 5
>     panic: No b_bufobj 0xc11d0c20
>     KDB: enter: panic
>     [ thread pid 12 tid 100007 ]
>     Stopped at      $d:     ldrb    r15, [r15, r15, ror r15]!
>     db> c
>     Uptime: 6m57s
>     Automatic reboot in 15 seconds - press a key on the console to abort
> 
> I see the same behaviour performing `portsnap fetch` over the UART
> connection. There's some trace/proc/reg love at
> https://gist.github.com/jbirch/9135611, but I'm afraid I don't know much
> more here. This is reliably reproducible so I'll be using it to learn how
> to effectively use ddb.

I recognize this, because a mistake of mine is involved... it got a
timeout based on new timeout logic I added in r261945.  As part of
trying to recover from that I made the code do a controller reset, and
that was a mistake, it leads to "everything after that fails."  I fixed
that in r261983, which does a lighter-weight reset that may let the
controller recover and subsequent retries will work.  I'm not saying
updating to r261983 will fix everything, but it's more-correct code.

What this doesn't explain is why it's getting a timeout in the first
place.  No single sdcard transaction is supposed to take longer than 250
milliseconds according to the SD spec.  When I was testing with this
stuff a few days ago, I had a 16gb card that was sometimes taking
between 1-2 seconds to complete a write command, but the commands were
completing successfully after that much time.  I tried a samsung 8gb and
a sandisk 4gb card and they worked fine.  It made me wonder if the 16gb
card was maybe some sort of grey market counterfeit.

-- Ian




More information about the freebsd-arm mailing list