panic "Sleeping thread owns a non-sleepable lock" via cv_timedwait_signal, was "rsync over NFS"

John Baldwin jhb at freebsd.org
Tue Oct 2 21:23:03 UTC 2012


On Tuesday, October 02, 2012 2:19:35 pm Norbert Aschendorff wrote:
> Well...
> 
> Here the results for a kernel without WITNESS_SKIPSPIN (I'll compile one
> including that tomorrow, but until then...)
> 
> Good news is: The kernel crashed with activated WITNESS.
> Bad news is: I have to turn power off after the crash with WITNESS. The
> crash dump is _not_ written to disk :(
> 
> Good news II is: It wrote something to the syslog. Actually, it wrote
> very much to the syslog, some megabytes in total. Most of it is the
> same, here the latest messages logfile:
> http://lbo.spheniscida.de/Files/nfs-crash.log (94K)
> 
> It specifies the file, line and zone. Maybe it's useful...

That does help.  It tells us that the lock being held is a vnode interlock 
that was last acquired in vinactive().

I don't see how though, unless the lock was recursively acquired elsewhere.

You could try adding a different WITNESS check (using WITNESS_WARN) to see
which NFS proc returns with a lock held so you can catch this when it first 
occurs rather than much later after the fact.  Do you have the start of the 
log messages?

-- 
John Baldwin


More information about the freebsd-stable mailing list