Re: beta2 panic: VAPPEND without VWRITE

From: Rick Macklem <rmacklem_at_uoguelph.ca>
Date: Sat, 1 Oct 2011 18:39:46 -0400 (EDT)
Harald Schmalzbauer wrote:
> schrieb Attilio Rao am 01.10.2011 16:49 (localtime):
> > Can you please show the panic message?
> 
> Sorry, I forgot to add it here:
> 
> free indoe /var/123088 had 8 blocks
> panic: VAPPEND withour VWRITE
> >> cpuid = 0
> >> KDB: enter: panic
> >> [ thread pid 1445 tid 100126 ]
> >> Stopped at kbd_enter+0x2b: movq $0,0x918a52(%rip)
> >> db> bt
> >> Tracing pid 1445 tid 100126 td 0xfffffe000510d460
> >> kdb_enter() at kbd_enter+0x3b
> >> panic() at panic+0x180
> >> vn_isdisk() at vn_isdisk
> >> ufs_accessx() at ufs_accessx+0x188
> >> vop_stdaccess() at vop_stdaccess+0x43
> >> unionfs_access() at unionfs_access+0x1c4
> >> vn_open_cred() at vn_open_cred+0x547
> >> kern_opneat() at kern_openat+0x1f9
> >> syscallenter() at syscallenter+0x1aa
> >> syscall() at syscall+0x4c
> >> Xfast_syscall() at Xfast_syscall+0xdd
> >> --- syscall (5, FreeBSD ELF64, open), rip = 0x801799f2c, rsp =
> >> 0x7fffffffb388, rbp = 0x8 ---
> 
> I'ts reproducable with exact the same hex-numbers with 'scp' when scp
> tries to alter knwon_hosts, which is on unionfs.
> 
You could try the attached one line patch. Since VAPPEND is a modifier
for VWRITE, it makes sense to clear it along with VWRITE, I think?

rick

> Here's some LORs, I havenÄt checked if they're already known. I don't
> have the known-LORs-URL handy...
> 
> lock order reversal:
> 1st 0xfffffe000519c278 unionfs (unionfs) _at_
> /usr/src/sys/modules/unionfs/../../fs/unionfs/union_subr.c:356
> 2nd 0xfffffe000519c458 ufs (ufs) _at_ /usr/src/sys/kern/vfs_subr.c:2246
> KDB: stack backtrace:
> db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
> kdb_backtrace() at kdb_backtrace+0x37
> _witness_debugger() at _witness_debugger+0x2e
> witness_checkorder() at witness_checkorder+0x807
> __lockmgr_args() at __lockmgr_args+0xdc6
> ffs_lock() at ffs_lock+0x8c
> VOP_LOCK1_APV() at VOP_LOCK1_APV+0x9b
> _vn_lock() at _vn_lock+0x47
> vputx() at vputx+0x328
> unionfs_noderem() at unionfs_noderem+0x1c4
> unionfs_reclaim() at unionfs_reclaim+0x11
> vgonel() at vgonel+0x105
> vrecycle() at vrecycle+0x4c
> unionfs_inactive() at unionfs_inactive+0x20
> vinactive() at vinactive+0x72
> vputx() at vputx+0x386
> kern_statat_vnhook() at kern_statat_vnhook+0x11d
> kern_statat() at kern_statat+0x15
> stat() at stat+0x2a
> syscallenter() at syscallenter+0x1aa
> syscall() at syscall+0x4c
> Xfast_syscall() at Xfast_syscall+0xdd
> --- syscall (188, FreeBSD ELF64, stat), rip = 0x800dc7ecc, rsp =
> 0x7fffffffd6a8, rbp = 0x801441190 ---
> lock order reversal:
> 1st 0xffffff80e9bf59f8 bufwait (bufwait) _at_
> /usr/src/sys/kern/vfs_bio.c:2658
> 2nd 0xfffffe00051a7a00 dirhash (dirhash) _at_
> /usr/src/sys/ufs/ufs/ufs_dirhash.c:284
> KDB: stack backtrace:
> db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
> kdb_backtrace() at kdb_backtrace+0x37
> _witness_debugger() at _witness_debugger+0x2e
> witness_checkorder() at witness_checkorder+0x807
> _sx_xlock() at _sx_xlock+0x55
> ufsdirhash_acquire() at ufsdirhash_acquire+0x33
> ufsdirhash_add() at ufsdirhash_add+0x19
> ufs_direnter() at ufs_direnter+0x909
> ufs_mkdir() at ufs_mkdir+0x44d
> VOP_MKDIR_APV() at VOP_MKDIR_APV+0x93
> kern_mkdirat() at kern_mkdirat+0x290
> syscallenter() at syscallenter+0x1aa
> syscall() at syscall+0x4c
> Xfast_syscall() at Xfast_syscall+0xdd
> --- syscall (136, FreeBSD ELF64, mkdir), rip = 0x800933eec, rsp =
> 0x7fffffffd768, rbp = 0x800c07050 ---
> lock order reversal:
> 1st 0xfffffe000514f818 ufs (ufs) _at_ /usr/src/sys/kern/vfs_subr.c:2134
> 2nd 0xffffff80e9bf59f8 bufwait (bufwait) _at_
> /usr/src/sys/ufs/ffs/ffs_vnops.c:260
> 3rd 0xfffffe0005706278 ufs (ufs) _at_ /usr/src/sys/kern/vfs_subr.c:2134
> KDB: stack backtrace:
> db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
> kdb_backtrace() at kdb_backtrace+0x37
> _witness_debugger() at _witness_debugger+0x2e
> witness_checkorder() at witness_checkorder+0x807
> __lockmgr_args() at __lockmgr_args+0xdc6
> ffs_lock() at ffs_lock+0x8c
> VOP_LOCK1_APV() at VOP_LOCK1_APV+0x9b
> _vn_lock() at _vn_lock+0x47
> vget() at vget+0x7b
> vfs_hash_get() at vfs_hash_get+0xd5
> ffs_vgetf() at ffs_vgetf+0x48
> softdep_sync_buf() at softdep_sync_buf+0x393
> ffs_syncvnode() at ffs_syncvnode+0x2b3
> ffs_truncate() at ffs_truncate+0x477
> ufs_direnter() at ufs_direnter+0x73b
> ufs_mkdir() at ufs_mkdir+0x44d
> VOP_MKDIR_APV() at VOP_MKDIR_APV+0x93
> kern_mkdirat() at kern_mkdirat+0x290
> syscallenter() at syscallenter+0x1aa
> syscall() at syscall+0x4c
> Xfast_syscall() at Xfast_syscall+0xdd
> --- syscall (136, FreeBSD ELF64, mkdir), rip = 0x800933eec, rsp =
> 0x7fffffffdbb8, rbp = 0x7fffffffdee6 ---
> 
> Thanks,
> 
> -Harry
> 
> >> cpuid = 0
> >> KDB: enter: panic
> >> [ thread pid 1445 tid 100126 ]
> >> Stopped at kbd_enter+0x2b: movq $0,0x918a52(%rip)
> >> db> bt
> >> Tracing pid 1445 tid 100126 td 0xfffffe000510d460
> >> kdb_enter() at kbd_enter+0x3b
> >> panic() at panic+0x180
> >> vn_isdisk() at vn_isdisk
> >> ufs_accessx() at ufs_accessx+0x188
> >> vop_stdaccess() at vop_stdaccess+0x43
> >> unionfs_access() at unionfs_access+0x1c4
> >> vn_open_cred() at vn_open_cred+0x547
> >> kern_opneat() at kern_openat+0x1f9
> >> syscallenter() at syscallenter+0x1aa
> >> syscall() at syscall+0x4c
> >> Xfast_syscall() at Xfast_syscall+0xdd
> >> --- syscall (5, FreeBSD ELF64, open), rip = 0x801799f2c, rsp =
> >> 0x7fffffffb388, rbp = 0x8 ---

Received on Sat Oct 01 2011 - 20:39:47 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:18 UTC