uma_zalloc_arg complaining about non-sleepable locks

John Baldwin jhb at freebsd.org
Tue Jan 26 20:12:29 UTC 2010


On Tuesday 26 January 2010 1:37:56 pm Marius Strobl wrote:
> On Tue, Jan 26, 2010 at 09:46:44AM -0500, John Baldwin wrote:
> > On Tuesday 26 January 2010 2:33:37 am Peter Jeremy wrote:
> > > I have just upgraded to 8-STABLE/amd64 from about 18 hours ago and am
> > > now getting regular (the following pair of messages about every
> > > minute) compaints as follows:
> > > 
> > > kernel: uma_zalloc_arg: zone "mbuf" with the following non-sleepable locks held:
> > > kernel: exclusive sleep mutex sp_lock (sp_lock) r = 0 (0xffffff000460bb00) locked @ /usr/src/sys/rpc/svc.c:1098
> > > kernel: KDB: stack backtrace:
> > > kernel: db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
> > > kernel: _witness_debugger() at _witness_debugger+0x2c
> > > kernel: witness_warn() at witness_warn+0x2c2
> > > kernel: uma_zalloc_arg() at uma_zalloc_arg+0x29d
> > > kernel: nfs_realign() at nfs_realign+0x5f
> > > kernel: fha_assign() at fha_assign+0x2d8
> > > kernel: svc_run_internal() at svc_run_internal+0x1ee
> > > kernel: svc_thread_start() at svc_thread_start+0xb
> > > kernel: fork_exit() at fork_exit+0x112
> > > kernel: fork_trampoline() at fork_trampoline+0xe
> > > kernel: --- trap 0xc, rip = 0x80069e04c, rsp = 0x7fffffffe6d8, rbp = 0x5 ---
> > > kernel: uma_zalloc_arg: zone "mbuf" with the following non-sleepable locks held:
> > > kernel: exclusive sleep mutex sp_lock (sp_lock) r = 0 (0xffffff000460bb00) locked @ /usr/src/sys/rpc/svc.c:1098
> > > kernel: KDB: stack backtrace:
> > > kernel: db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
> > > kernel: _witness_debugger() at _witness_debugger+0x2c
> > > kernel: witness_warn() at witness_warn+0x2c2
> > > kernel: uma_zalloc_arg() at uma_zalloc_arg+0x29d
> > > kernel: nfs_realign() at nfs_realign+0x5f
> > > kernel: fha_assign() at fha_assign+0x2d8
> > > kernel: svc_run_internal() at svc_run_internal+0x1ee
> > > kernel: svc_thread_start() at svc_thread_start+0xb
> > > kernel: fork_exit() at fork_exit+0x112
> > > kernel: fork_trampoline() at fork_trampoline+0xe
> > > kernel: --- trap 0xc, rip = 0x80069e04c, rsp = 0x7fffffffe6d8, rbp = 0x5 ---
> > > 
> > > It looks like NFS is missing some lock/unlock pairs.  Has anyone else
> > > seen this?  And does anyone have a fix?
> > 
> > I suspect this was caused by the recent alignment fixes to NFS.  I've cc'd
> > Marius.
> > 
> 
> Could you please give the following patch a try?
> http://people.freebsd.org/~marius/fha_extract_info_realign2.diff
> 
> It would also be great if one of the NFS gurus could have a look at
> the whole issue. Unfortunately, I hadn't received a reply regarding
> the original patch.

Hmm, the old code was already using M_DONTWAIT, so now I don't see why you
were getting the witness warning.

-- 
John Baldwin


More information about the freebsd-stable mailing list