Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 1 Oct 2012 08:51:50 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-stable@freebsd.org
Cc:        Norbert Aschendorff <norbert.aschendorff@yahoo.de>, Rick Macklem <rmacklem@uoguelph.ca>
Subject:   Re: panic "Sleeping thread owns a non-sleepable lock" via cv_timedwait_signal, was "rsync over NFS"
Message-ID:  <201210010851.50914.jhb@freebsd.org>
In-Reply-To: <509617515.1463700.1349093264849.JavaMail.root@erie.cs.uoguelph.ca>
References:  <509617515.1463700.1349093264849.JavaMail.root@erie.cs.uoguelph.ca>

next in thread | previous in thread | raw e-mail | index | archive | help
On Monday, October 01, 2012 8:07:44 am Rick Macklem wrote:
> Norbert Aschendorff wrote:
> > Hi,
> > 
> > my FreeBSD-9/stable machine (FreeBSD freebsd-tower.goebo.site
> > 9.1-PRERELEASE FreeBSD 9.1-PRERELEASE #2 r241044M: Sat Sep 29 12:52:01
> > CEST 2012 lbo@freebsd-tower.goebo.site:/usr/obj/usr/src/sys/GENERIC
> > i386) crashes reproducibly when rsync-ing files to an NFSv4 share on
> > the FreeBSD machine. The crash makes the system reboot. The crash
> > creates files in /var/crash which may be obtained here: [1].
> > 
> > This problem is not limited to the self-compiled kernel/world
> > (stable/9)
> > but appears also on pre-compiled 9.1-PRERELEASE. I did not test
> > 9.0-RELEASE.
> > 
> > If I do not use rsync on this NFS share, everything works completely
> > fine.
> > 
> > Workaround: Use rsync over SSH.
> > 
> > --Norbert
> > 
> > [1] http://lbo.spheniscida.de/Files/nfs-rsync-crash.tgz (25K), vmcore
> > of
> > around 300M (90M gzipped, 64M LZMA'd) not included
> > 
> >From a quick look, the panic is:
> Sleeping thread (tid 100099, pid 1599) owns a non-sleepable lock
> called from the server side krpc via cv_timedwait_sig().
> 
> I assume this means that another mutex or similar is held as well as
> the one passed in as an argument to cv_timedwait_sig()?

Yes.

> (I'll keep looking, but I can't spot where another one might be held
>  by the NFS or krpc code.)

If this is reproducible, then adding WITNESS to the kernel will add
additional info in the panic message to tell you what other locks are
held and which file:line they were acquired at.

> I'm not knowledgible when it comes to gdb and crash dumps. Is there an
> easy command Norbert can type to see all the locks held by
> tid 100099, pid 1599?

No. :(  Only WITNESS keeps track of that sort of state.

-- 
John Baldwin



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