ZFS files server crash: solaris assert: start < end in trim_map.c

Willem Jan Withagen wjw at digiware.nl
Tue Sep 29 13:30:26 UTC 2015


Hi,

Just found this after a crash:
   Architecture: amd64
   Architecture Version: 2
   Dump Length: 7031291904B (6705 MB)
   Blocksize: 512
   Dumptime: Tue Sep 29 12:55:01 2015
   Hostname: zfs.digiware.nl
   Magic: FreeBSD Kernel Dump
   Version String: FreeBSD 10.2-STABLE #2 r287746M: Sun Sep 13 12:33:23 
CEST 2015
     root at zfs.digiware.nl:/home/obj/amd64/usr/srcs/work10/src/sys/ZFS
   Panic String: solaris assert: start < end, file: 
/usr/srcs/work10/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c, 
line: 219


(kgdb) bt
#0  doadump (textdump=1) at pcpu.h:219
#1  0xffffffff804f9d97 in kern_reboot (howto=260) at 
/usr/srcs/work10/src/sys/kern/kern_shutdown.c:451
#2  0xffffffff804fa195 in vpanic (fmt=<value optimized out>, ap=<value 
optimized out>) at /usr/srcs/work10/src/sys/kern/kern_shutdown.c:758
#3  0xffffffff804fa023 in panic (fmt=0x0) at 
/usr/srcs/work10/src/sys/kern/kern_shutdown.c:687
#4  0xffffffff8106a1fd in assfail (a=<value optimized out>, f=<value 
optimized out>, l=<value optimized out>)
     at 
/usr/srcs/work10/src/sys/modules/opensolaris/../../cddl/compat/opensolaris/kern/opensolaris_cmn_err.c:81
#5  0xffffffff80e65161 in trim_map_segment_add (tm=0xfffff8001432ba00, 
start=7704576, end=7704576, txg=0)
     at 
/usr/srcs/work10/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c:219
#6  0xffffffff80e6464f in trim_map_free_locked (tm=<value optimized 
out>, start=<value optimized out>, end=<value optimized out>, txg=<value 
optimized out>)
     at 
/usr/srcs/work10/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c:319
#7  0xffffffff80e64588 in trim_map_free (vd=0xfffff8000ae3b800, 
offset=7704576, size=<value optimized out>, txg=0)
     at 
/usr/srcs/work10/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c:337
#8  0xffffffff80db490c in arc_hdr_destroy (hdr=0xfffff800198ac5e8) at 
/usr/srcs/work10/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c:1825
#9  0xffffffff80db980a in l2arc_evict (dev=0xfffff8000aa2d480, 
distance=<value optimized out>, all=0)
     at 
/usr/srcs/work10/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c:5004
#10 0xffffffff80dba0da in l2arc_feed_thread (dummy=<value optimized out>)
     at 
/usr/srcs/work10/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c:5581
#11 0xffffffff804c9855 in fork_exit (callout=0xffffffff80db9b80 
<l2arc_feed_thread>, arg=0x0, frame=0xfffffe023bbc4bc0)
     at /usr/srcs/work10/src/sys/kern/kern_fork.c:1018
#12 0xffffffff807773ee in fork_trampoline () at 
/usr/srcs/work10/src/sys/amd64/amd64/exception.S:611
#13 0x0000000000000000 in ?? ()

And the values there are:
#5  0xffffffff80e65161 in trim_map_segment_add (tm=0xfffff8001432ba00, 
start=7704576, end=7704576, txg=0)
     at 
/usr/srcs/work10/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c:219
219             VERIFY(start < end);
(kgdb) p start
$1 = 7704576
(kgdb) p end
$2 = 7704576

Which suggests to me that the comparison might need to be '<=', but that 
will probably not be this simple...

--WjW



More information about the freebsd-fs mailing list