Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 9 Aug 2015 09:47:04 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Tim Kientzle <tim@kientzle.com>
Cc:        FreeBSD Current <freebsd-current@freebsd.org>
Subject:   Re: Consistent crash of BeagleBone kernel
Message-ID:  <20150809064704.GH2072@kib.kiev.ua>
In-Reply-To: <CC793A5E-83D2-4169-AECB-9690572A00D0@kientzle.com>
References:  <CC793A5E-83D2-4169-AECB-9690572A00D0@kientzle.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Aug 08, 2015 at 05:24:37PM -0700, Tim Kientzle wrote:
> I???m seeing the following crash quite consistently on r286438.  It looks like the recent work on the kernel linker locking still has some issues.
> 
> Any suggested workarounds?
> 
> Tim
> 
> ==== log trace ===
> ...
> Starting file system checks:
> /dev/mmcsd0s2a: FILE SYSTEM CLEAN; SKIPPING CHECKS
> /dev/mmcsd0s2a: clean, 7320851 free (179 frags, 915084 blocks, 0.0% fragmentation)
> lock order reversal:
>  1st 0xcd225040 bufwait (bufwait) @ /Users/tim/projects/crochet/src-head/sys/kern/vfs_bio.c:3191
>  2nd 0xc2e69400 dirhash (dirhash) @ /Users/tim/projects/crochet/src-head/sys/ufs/ufs/ufs_dirhash.c:281
> ??? usual stack trace omitted ...
> Mounting local file systems:random: unblocking device.
> .
> ELF ldconfig path: /lib /usr/lib /usr/lib/compat
> Setting hostname: beaglebone.
> Setting up harvesting:[HIGH_PERFORMANCE],[FS_ATIME],SWI,INTERRUPT,NET_NG,NET_ETHER,NET_TUN,MOUSE,KEYBOARD,ATTACH,CACHED
> Feeding entropy:.
> lock order reversal:
>  1st 0xc083ef40 kernel linker (kernel linker) @ /Users/tim/projects/crochet/src-head/sys/kern/kern_linker.c:1030
>  2nd 0xc2d63c94 ufs (ufs) @ /Users/tim/projects/crochet/src-head/sys/kern/vfs_lookup.c:529
> KDB: stack backtrace:
> panic: _sx_xlock_hard: recursed on non-recursive sx kernel linker @ /Users/tim/projects/crochet/src-head/sys/kern/kern_linker.c:552
> 
> KDB: enter: panic
> [ thread pid 168 tid 100079 ]
> Stopped at      $d.7:   ldrb    r15, [r15, r15, ror r15]!
> db> bt
> Tracing pid 168 tid 100079 td 0xc30db6a0
> panic: _sx_xlock_hard: recursed on non-recursive sx kernel linker @ /Users/tim/projects/crochet/src-head/sys/kern/kern_linker.c:552

Without a backtrace it is too much work to guess what is going on there.
You could mark the kld_sx as recursive in kern_linker.c:linker_init().
Then either add a hack to kern_sx.c:sx_xlock_hard() to print the
backtrace on the kld_sx recursion, or just hope that the LOR just before
the panic is indicative.

What is strange is that this is first report of the issue, the latest change
to kern_linker.c was around a year ago.



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