Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 Nov 2010 08:41:14 +0200
From:      Andriy Gapon <avg@freebsd.org>
To:        freebsd-current@freebsd.org
Subject:   Re: panic: uma_zalloc_arg: Returning an empty bucket.
Message-ID:  <4CDA3E8A.50004@freebsd.org>
In-Reply-To: <4CDA3475.3060101@freebsd.org>
References:  <4CDA3475.3060101@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
on 10/11/2010 07:58 Andriy Gapon said the following:
> 
> I've been doing some stress-testing for VM+ZFS on a kernel with
> WITNESS+INVARIANTS and I have already stumbled into some curious panics.
> 
> Here's another one:
> Unread portion of the kernel message buffer:
> panic: uma_zalloc_arg: Returning an empty bucket.

Looks like this particular panic was caused by my local changes for draining
per-CPU caches in very low memory conditions.

> cpuid = 0
> KDB: stack backtrace:
> db_trace_self_wrapper() at 0xffffffff801b8b3a = db_trace_self_wrapper+0x2a
> kdb_backtrace() at 0xffffffff803a7a8a = kdb_backtrace+0x3a
> panic() at 0xffffffff80370632 = panic+0x1d2
> uma_zalloc_arg() at 0xffffffff80507850 = uma_zalloc_arg+0x300
> kmem_cache_alloc() at 0xffffffff80dac385 = kmem_cache_alloc+0x15
> arc_buf_alloc() at 0xffffffff80c016e4 = arc_buf_alloc+0x34
> arc_read_nolock() at 0xffffffff80c0389d = arc_read_nolock+0x2bd
> arc_read() at 0xffffffff80c03dff = arc_read+0x7f
> dbuf_prefetch() at 0xffffffff80c0826a = dbuf_prefetch+0x15a
> dmu_zfetch_dofetch() at 0xffffffff80c21444 = dmu_zfetch_dofetch+0x104
> dmu_zfetch() at 0xffffffff80c21c89 = dmu_zfetch+0x5e9
> dbuf_read() at 0xffffffff80c06c04 = dbuf_read+0x454
> dmu_buf_hold_array_by_dnode() at 0xffffffff80c0a58d =
> dmu_buf_hold_array_by_dnode+0x27d
> dmu_read() at 0xffffffff80c0a80f = dmu_read+0xbf
> zfs_freebsd_getpages() at 0xffffffff80c6c9b5 = zfs_freebsd_getpages+0x8c5
> VOP_GETPAGES_APV() at 0xffffffff805a6618 = VOP_GETPAGES_APV+0xe8
> vnode_pager_getpages() at 0xffffffff80523c09 = vnode_pager_getpages+0xb9
> vm_fault() at 0xffffffff8050a67a = vm_fault+0xf5a
> trap_pfault() at 0xffffffff80545d6f = trap_pfault+0x11f
> trap() at 0xffffffff80546448 = trap+0x4a8
> calltrap() at 0xffffffff80530628 = calltrap+0x8
> 
> (kgdb) bt
> #0  doadump () at pcpu.h:224
> #1  0xffffffff8036fc9a in kern_reboot (howto=260) at
> /usr/src/sys/kern/kern_shutdown.c:306
> #2  0xffffffff80370668 in panic (fmt=Variable "fmt" is not available.
> ) at /usr/src/sys/kern/kern_shutdown.c:609
> #3  0xffffffff80507850 in uma_zalloc_arg (zone=0xffffff00071c6e00,
> udata=0xffffff00071c8380, flags=2) at /usr/src/sys/vm/uma_core.c:2132
> #4  0xffffffff80dac385 in kmem_cache_alloc (cache=Variable "cache" is not available.
> ) at
> /usr/src/sys/modules/opensolaris/../../cddl/compat/opensolaris/kern/opensolaris_kmem.c:196
> #5  0xffffffff80c016e4 in arc_buf_alloc (spa=0xffffff00071e5000, size=131072,
> tag=Variable "tag" is not available.
> )
>     at
> /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c:1344
> #6  0xffffffff80c0389d in arc_read_nolock (pio=0x0, spa=0xffffff00071e5000,
> bp=0xffffff8002c71e80, done=0, private=0x0, priority=6, zio_flags=3,
>     arc_flags=0xffffff812673b2bc, zb=0xffffff812673b280) at
> /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c:2931
> #7  0xffffffff80c03dff in arc_read (pio=0x0, spa=0xffffff00071e5000,
> bp=0xffffff8002c71e80, pbuf=0xffffff00abaa31b0, done=0, private=0x0, priority=6,
>     zio_flags=3, arc_flags=0xffffff812673b2bc, zb=0xffffff812673b280)
>     at
> /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c:2832
> #8  0xffffffff80c0826a in dbuf_prefetch (dn=0xffffff00b440f000, blkid=221)
>     at
> /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c:1641
> #9  0xffffffff80c21444 in dmu_zfetch_dofetch (zf=0xffffff00b440f2b8,
> zs=0xffffff0126bb6480)
>     at
> /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c:308
> #10 0xffffffff80c21c89 in dmu_zfetch (zf=0xffffff00b440f2b8, offset=Variable
> "offset" is not available.
> )
>     at
> /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c:526
> #11 0xffffffff80c06c04 in dbuf_read (db=0xffffff0031970b60,
> zio=0xffffff0078bb2328, flags=54)
>     at
> /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c:568
> #12 0xffffffff80c0a58d in dmu_buf_hold_array_by_dnode (dn=0xffffff00b440f000,
> offset=Variable "offset" is not available.
> )
>     at
> /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c:235
> #13 0xffffffff80c0a80f in dmu_read (os=Variable "os" is not available.
> ) at
> /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c:572
> #14 0xffffffff80c6c9b5 in zfs_freebsd_getpages (ap=Variable "ap" is not available.
> ) at
> /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c:4348
> #15 0xffffffff805a6618 in VOP_GETPAGES_APV (vop=0xffffffff80cd8680,
> a=0xffffff812673b740) at vnode_if.c:2666
> #16 0xffffffff80523c09 in vnode_pager_getpages (object=Variable "object" is not
> available.
> ) at vnode_if.h:1154
> #17 0xffffffff8050a67a in vm_fault (map=0xffffff00ab3d5c40, vaddr=35585523712,
> fault_type=1 '\001', fault_flags=Variable "fault_flags" is not available.
> ) at vm_pager.h:130
> #18 0xffffffff80545d6f in trap_pfault (frame=0xffffff812673bc40, usermode=1) at
> /usr/src/sys/amd64/amd64/trap.c:729
> #19 0xffffffff80546448 in trap (frame=0xffffff812673bc40) at
> /usr/src/sys/amd64/amd64/trap.c:403
> #20 0xffffffff80530628 in calltrap () at /usr/src/sys/amd64/amd64/exception.S:228
> #21 0x0000000800858fe6 in ?? ()


-- 
Andriy Gapon



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