Freebsd 11.0 RELEASE - ZFS deadlock

Andriy Gapon avg at FreeBSD.org
Thu Nov 10 10:22:54 UTC 2016


On 09/11/2016 15:58, Eric van Gyzen wrote:
> On 11/09/2016 07:48, Henri Hennebert wrote:
>> I encounter a strange deadlock on
>>
>> FreeBSD avoriaz.restart.bel 11.0-RELEASE-p3 FreeBSD 11.0-RELEASE-p3 #0 r308260:
>> Fri Nov  4 02:51:33 CET 2016
>> root at avoriaz.restart.bel:/usr/obj/usr/src/sys/AVORIAZ  amd64
>>
>> This system is exclusively running on zfs.
>>
>> After 3 or 4 days, `periodic daily` is locked in the directory /usr/local/news/bin
>>
>> [root at avoriaz ~]# ps xa|grep find
>> 85656  -  D        0:01.13 find / ( ! -fstype local -o -fstype rdonly ) -prune
>> -o ( -name [#,]* -o -name .#* -o -name a.out -o -nam
>>   462  1  S+       0:00.00 grep find
>> [root at avoriaz ~]# procstat -f 85656
>>   PID COMM                FD T V FLAGS    REF  OFFSET PRO NAME
>> 85656 find              text v r r-------   -       - - /usr/bin/find
>> 85656 find               cwd v d r-------   -       - - /usr/local/news/bin
>> 85656 find              root v d r-------   -       - - /
>> 85656 find                 0 v c r-------   3       0 - /dev/null
>> 85656 find                 1 p - rw------   1       0 - -
>> 85656 find                 2 v r -w------   7      17 - -
>> 85656 find                 3 v d r-------   1       0 - /home/root
>> 85656 find                 4 v d r-------   1       0 - /home/root
>> 85656 find                 5 v d r----n--   1 533545184 - /usr/local/news/bin
>> [root at avoriaz ~]#
>>
>> If I try `ls /usr/local/news/bin` it is also locked.
>>
>> After `shutdown -r now` the system remain locked after the line '0 0 0 0 0 0'
>>
>> After a reset and reboot  I can access /usr/local/news/bin.
>>
>> I delete this directory and reinstall the package `portupgrade -fu news/inn`
>>
>> 5 days later `periodic daily`is locked on the same directory :-o
>>
>> Any idea?
> 
> I can't help with the deadlock, but someone who _can_ help will probably ask for
> the output of "procstat -kk PID" with the PID of the "find" process.

In fact, it's procstat -kk -a.  With just one thread we would see that a thread
is blocked on something, but we won't see why that something can not be acquired.


-- 
Andriy Gapon


More information about the freebsd-stable mailing list