From owner-freebsd-stable@freebsd.org Wed Mar 2 09:53:46 2016 Return-Path: Delivered-To: freebsd-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 97B3BAC01C3 for ; Wed, 2 Mar 2016 09:53:46 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mailman.ysv.freebsd.org (mailman.ysv.freebsd.org [IPv6:2001:1900:2254:206a::50:5]) by mx1.freebsd.org (Postfix) with ESMTP id 816D01A49 for ; Wed, 2 Mar 2016 09:53:46 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: by mailman.ysv.freebsd.org (Postfix) id 81902AC01C2; Wed, 2 Mar 2016 09:53:46 +0000 (UTC) Delivered-To: stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 80FF7AC01C1; Wed, 2 Mar 2016 09:53:46 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 12CD21A48; Wed, 2 Mar 2016 09:53:45 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from tom.home (kostik@localhost [127.0.0.1]) by kib.kiev.ua (8.15.2/8.15.2) with ESMTPS id u229reiU046583 (version=TLSv1 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Wed, 2 Mar 2016 11:53:40 +0200 (EET) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua u229reiU046583 Received: (from kostik@localhost) by tom.home (8.15.2/8.15.2/Submit) id u229rd52046582; Wed, 2 Mar 2016 11:53:39 +0200 (EET) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Wed, 2 Mar 2016 11:53:39 +0200 From: Konstantin Belousov To: Maxim Sobolev Cc: stable@freebsd.org, freebsd-fs@freebsd.org, Kirk McKusick Subject: Re: Process stuck in "vnread" Message-ID: <20160302095339.GB67250@kib.kiev.ua> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=3.4.1 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on tom.home X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 Mar 2016 09:53:46 -0000 On Wed, Mar 02, 2016 at 01:12:31AM -0800, Maxim Sobolev wrote: > Hi, I've encountered cp(1) process stuck in the vnread state on one of my > build machines that got recently upgraded to 10.3. > > 0 79596 1 0 20 0 17092 1396 wait I 1 0:00.00 > /bin/sh /usr/local/bin/autoreconf -f -i > 0 79602 79596 0 52 0 41488 9036 wait I 1 0:00.07 > /usr/local/bin/perl -w /usr/local/bin/autoreconf-2.69 -f -i > 0 79639 79602 0 72 0 0 0 - Z 1 0:00.27 > > 0 79762 79602 0 20 0 17092 1396 wait I 1 0:00.00 > /bin/sh /usr/local/bin/automake --add-missing --copy --force-missing > 0 79768 79762 0 52 0 49736 13936 wait I 1 0:00.11 > /usr/local/bin/perl -w /usr/local/bin/automake-1.15 --add-missing --copy > --force-missing > 0 79962 79768 0 20 0 12368 1024 vnread DL 1 0:00.00 > cp /usr/local/share/automake-1.15/compile ./compile > > I am not sure if it's related to that OS version upgrade, but I have not > seen any such issues on the same machine in 2-3 years running essentially > the same build process with version 9.x, 10.0, 10.1 and 10.2. > > $ uname -a > FreeBSD van01.sippysoft.com 10.3-PRERELEASE FreeBSD 10.3-PRERELEASE #1 > 80de3e2(master)-dirty: Tue Feb 2 12:19:57 PST 2016 > sobomax@abc.sippysoft.com:/usr/obj/usr/home/sobomax/projects/freebsd103/sys/ABC > amd64 > > The kernel stack trace is: > > (kgdb) thread 360 > [Switching to thread 360 (Thread 100515)]#0 0xffffffff8095244e in > sched_switch () > (kgdb) bt > #0 0xffffffff8095244e in sched_switch () > #1 0xffffffff809313b1 in mi_switch () > #2 0xffffffff8097089a in sleepq_wait () > #3 0xffffffff80930dd7 in _sleep () > #4 0xffffffff809b230e in bwait () > #5 0xffffffff80b511f3 in vnode_pager_generic_getpages () > #6 0xffffffff80dd1607 in VOP_GETPAGES_APV () > #7 0xffffffff80b4f59a in vnode_pager_getpages () > #8 0xffffffff80b30031 in vm_fault_hold () > #9 0xffffffff80b2f797 in vm_fault () > #10 0xffffffff80cb5a75 in trap_pfault () > #11 0xffffffff80cb51dd in trap () > #12 0xffffffff80c9b122 in calltrap () > #13 0xffffffff80cb36f1 in copyin () > #14 0xffffffff80977ddf in uiomove_faultflag () The backtrace indicates, with 99% certainity that the issue is in the requested read never finishing. But the backtrace is obviously not complete, and there might be something more happening. At least, we do not handle page-ins during uiomove() on user io for quite some time. If the vnode which io hung is UFS over md, you should look at the md worker thread state. > > The FS stack configuration is somewhat unique, so I am not sure if I am > hitting some rare race condition or lock ordering issues specific to that. > It's basically ZFS (ZRAID) on top of pair or SATA SSDs with big file on > that FS attached via md(4) and UFS2 on that md(4). The build itself runs in > chroot with that UFS2 fs as its primary root. > > Just maybe additional bit of info, attempting to list the directory with > that UFS image also got my bash process stuck in "zfs" state, backtrace > from that is: A deadlock in the underlying io layer is consistent with this (secondary) observation. > > (kgdb) thread 353 > [Switching to thread 353 (Thread 100508)]#0 0xffffffff8095244e in > sched_switch () > (kgdb) bt > #0 0xffffffff8095244e in sched_switch () > #1 0xffffffff809313b1 in mi_switch () > #2 0xffffffff8097089a in sleepq_wait () > #3 0xffffffff809069ad in sleeplk () > #4 0xffffffff809060e0 in __lockmgr_args () > #5 0xffffffff809b8b7c in vop_stdlock () > #6 0xffffffff80dd0a3b in VOP_LOCK1_APV () > #7 0xffffffff809d6d23 in _vn_lock () > #8 0xffffffff81a8c9cd in ?? () > #9 0x0000000000000000 in ?? ()