[REPORT] Some panics on ZFS
Norikatsu Shigemura
nork at FreeBSD.org
Sun Dec 24 06:28:58 PST 2006
On Sat, 23 Dec 2006 15:23:32 +0100
Pawel Jakub Dawidek <pjd at freebsd.org> wrote:
> > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> > ZFS filesystem version 3
> > ZFS storage pool version 3
> > Warning: memory type solaris leaked memory on destroy (116 allocations, 7328 bytes leaked).
> > ZFS filesystem version 3
> > ZFS storage pool version 3
> > Warning: memory type solaris leaked memory on destroy (116 allocations, 7328 bytes leaked).
> > ZFS filesystem version 3
> > ZFS storage pool version 3
> > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> This one is already fixed.
Thank you.
> > But 'kldload zfs; mount -t zfs tank /mnt' didn't panic. f(?_?)?
> It can be easly fixed, but bascially in zfs world you should mount file
I saw perforce/112119. Thank you.
(http://perforce.freebsd.org/chv.cgi?CH=112119)
> systems after loading zfs.ko via:
> # zfs mount -a
> and activate zvols:
> # zfs volinit
Yes. So I'm using following configuration:-).
/etc/rc.conf.d/mountlate - - - - - - - - - - - - - - - - - - - - - - -
zfsinit () {
kldstat -q -m zfs || kldload zfs
}
zfsmount () {
zfs mount -a
zfs volinit
}
zfsunmount () {
zfs unmount -a
}
start_precmd=zfsinit
start_postcmd=zfsmount
stop_precmd=zfsunmount
/etc/rc.conf.d/mountlate - - - - - - - - - - - - - - - - - - - - - - -
I think that /etc/rc.d/mountzfs will be installed.
> > 3. When I'm testing with iozone, ZFS panic-ed.
> > I saw some memory modified after free.
> Are you able to setup memguard(9)? Or maybe you can give me procedure to
> reproduce it?
I did setup memguard(9). But I cannot get any data. Because
I got following panics:-).
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
panic: MEMGUARD: You must increase MAX_PAGES_PER_ITEM in memguard.c (requested: 512 pages)
cpuid = 0
KDB: enter: panic
[thread pid 817 tid 100070 ]
Stopped at kdb_enter+0x30: leave
db> bt
Tracing pid 817 tid 100070 td 0x8e80a360
kdb_enter(806b6baf,0,806d113f,f9ef6a8c,8e80a360,...) at kdb_enter+0x30
panic(806d113f,200,0,f9ef6aa4,200000,...) at panic+0x14e
memguard_alloc(200000,1,8ebd359f,200000,20000,...) at memguard_alloc+0x31
malloc(200000,8ec4cb20,1,f9ef6af8,8ebd349e,...) at malloc+0xaf
kmem_alloc(200000,1,80000,0,f9ef6b38,...) at kmem_alloc+0x21
kmem_zalloc(200000,1,0,0,100,...) at kmem_zalloc+0x1e
dbuf_init(f9ef6b5c,8ec09cc7,8ec56638,8ec08950,1c,...) at dbuf_init+0x81
dmu_init(8ec56638,8ec08950,1c,8,8ebacc80,...) at dmu_init+0x8
spa_init(3,0,0,0,180,...) at spa_init+0x97
zfs_modevent(8ebacc80,0,0,75,f9ef6ba4,...) at zfs_modevent+0x58
module_register_init(8ec4da30,0,806b44ad,dc,0,...) at module_register_init+0xa5
linker_file_sysinit(8eb8a500,8ebad180,f9ef6bec,175,8ebad180,...) at linker_file_sysinit+0xe0
linker_load_file(8ebad180,f9ef6c14,0,72c,d0,...) at linker_load_file+0x125
linker_load_module(0,8e04c400,0,0,f9ef6c40,...) at linker_load_module+0xf9
kern_kldload(8e80a360,8e04c400,f9ef6c68,0,2f8,...) at kern_kldload+0xc4
kldload(8e80a360,f9ef6d00,4,c,f9ef6d38,...) at kldload+0x74
syscall(f9ef6d38) at syscall+0x2e3
Xint0x80_syscall() at Xint0x80_syscall+0x20
--- syscall (1, FreeBSD ELF32, sys_exit), eip = 0x2, esp = 0x213, ebp = 0x7fbfeee4 ---
db>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
I increased MAX_PAGES_PER_ITEM to 65536. But...
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
panic: MEMGUARD: Failed with M_WAITOK: memguard_map too small
cpuid = 0
KDB: enter: panic
[thread pid 1027 tid 100126 ]
Stopped at kdb_enter+0x30: leave
db> bt
Tracing pid 1027 tid 100126 td 0x8ecd9d80
kdb_enter(806b6b8f,0,806d1172,f9fe3830,8ecd9d80,...) at kdb_enter+0x30
panic(806d1172,0,806d104e,f3,240,...) at panic+0x14e
memguard_alloc(240,2,0,240,8ecd8d80,...) at memguard_alloc+0x156
malloc(240,8ec50b20,2,f9fe389c,8ebd749e,...) at malloc+0xaf
kmem_alloc(240,2,84607000,9ee80400,f9fe38e4,...) at kmem_alloc+0x21
kmem_zalloc(240,2,8db77000,8db78000,7,...) at kmem_zalloc+0x1e
zio_create(25b9,0,9ee80400,aaf2b000,4000,...) at zio_create+0x2d
zio_write(8d416000,84607000,6,2,1,...) at zio_write+0x77
arc_write(8d416000,84607000,6,2,1,...) at arc_write+0x105
dbuf_sync(aafb2a50,8d416000,87109000,0,8ec48bf8,...) at dbuf_sync+0x3ca
dnode_sync(906d68f0,0,8d416000,87109000,8d416000,...) at dnode_sync+0x51b
dmu_objset_sync_dnodes(87109000,400,8ec48b11,806b5ba7,ae,...) at dmu_objset_sync_dnodes+0x97
dmu_objset_sync(85abc000,87109000,25b9,0,f9fe3bac,...) at dmu_objset_sync+0x60
dsl_dataset_sync(85aba000,87109000,0,84f8e1cc,84f8e184,...) at dsl_dataset_sync+0x24
dsl_pool_sync(84f8e000,25b9,0,1,0,...) at dsl_pool_sync+0x8f
spa_sync(84607000,25b9,0,84f8e15c,84f8e154,...) at spa_sync+0x453
txg_sync_thread(84f8e000,f9fe3d38,806b3a8a,328,8ecd8d80,...) at txg_sync_thread+0x1d7
fork_exit(8ec0fd20,84f8e000,f9fe3d38) at fork_exit+0xd1
fork_trampoline() at fork_trampoline+0x8
--- trap 0x1, eip = 0, esp = 0xf9fe3d6c, ebp = 0 ---
db>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> I'll try to reproduce iozone panic, I'd also like to reproduce "Memory
> modified after free" and "mi_switch: switch in a critical section"
> panics, can you tell me how to do it?
All cases are using iozone.
1. zpool create tank da0
2. cd /tank; iozone -a |& tee iozone.1.log
3. (panic) get backtrace and reset
4. cd /tank; iozone -a |& tee iozone.2.log
5. (panic) get backtrace and reset
6. cd /tank; ......
:
And I got many type of panic messages. So I don't know how to
reproduce these behaviors.
More information about the freebsd-fs
mailing list