From owner-freebsd-current@freebsd.org Tue Feb 20 17:07:44 2018 Return-Path: Delivered-To: freebsd-current@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2AE5CF157CA for ; Tue, 20 Feb 2018 17:07:44 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A35EC80E21 for ; Tue, 20 Feb 2018 17:07:43 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from tom.home (kib@localhost [127.0.0.1]) by kib.kiev.ua (8.15.2/8.15.2) with ESMTPS id w1KH7VA2043324 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Tue, 20 Feb 2018 19:07:34 +0200 (EET) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua w1KH7VA2043324 Received: (from kostik@localhost) by tom.home (8.15.2/8.15.2/Submit) id w1KH7VCQ043323; Tue, 20 Feb 2018 19:07:31 +0200 (EET) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Tue, 20 Feb 2018 19:07:31 +0200 From: Konstantin Belousov To: Juan Ram?n Molina Menor Cc: freebsd-current@freebsd.org, mjguzik@gmail.com Subject: Re: amd64 head -r329465 (non-debug build, but with symbols): "panic: spin lock held too long" during make check-old, reported during a sys_vfork Message-ID: <20180220170731.GN94212@kib.kiev.ua> References: <038d9336-9ee7-c079-5ad5-f023c6a306eb@club.fr> MIME-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <038d9336-9ee7-c079-5ad5-f023c6a306eb@club.fr> User-Agent: Mutt/1.9.3 (2018-01-21) 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-current@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Feb 2018 17:07:44 -0000 On Tue, Feb 20, 2018 at 05:50:57PM +0100, Juan Ram?n Molina Menor wrote: > > I committed the fix in > > https://svnweb.freebsd.org/base?view=revision&revision=329542 > > > > i.e. should be stable from this point on. > > Hi! > > It is maybe unrelated, but recent commits have broken my system with a > similar error. I did not have panics with a system built around > December, but since updating first to r329555 then today to r329641 I?m > getting a reproducible panic when logging out from a Lumina desktop session: > > Unread portion of the kernel message buffer: > spin lock 0xfffff8000d440020 (process slock) held by 0xfffff8000daed560 > (tid 100111) too long > panic: spin lock held too long > cpuid = 1 > time = 1519143505 > KDB: stack backtrace: > db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame > 0xfffffe00005c15e0 > vpanic() at vpanic+0x18d/frame 0xfffffe00005c1640 > panic() at panic+0x43/frame 0xfffffe00005c16a0 > _mtx_lock_indefinite_check() at _mtx_lock_indefinite_check+0x71/frame > 0xfffffe00005c16b0 > mtx_spin_wait_unlocked() at mtx_spin_wait_unlocked+0x59/frame > 0xfffffe00005c16e0 > proc_reap() at proc_reap+0x24/frame 0xfffffe00005c1720 > procdesc_close() at procdesc_close+0x125/frame 0xfffffe00005c1760 > closef() at closef+0x251/frame 0xfffffe00005c17f0 > fdescfree_fds() at fdescfree_fds+0x90/frame 0xfffffe00005c1840 > fdescfree() at fdescfree+0x4df/frame 0xfffffe00005c1900 > exit1() at exit1+0x508/frame 0xfffffe00005c1970 > sys_sys_exit() at sys_sys_exit+0xd/frame 0xfffffe00005c1980 > amd64_syscall() at amd64_syscall+0xa48/frame 0xfffffe00005c1ab0 > fast_syscall_common() at fast_syscall_common+0x101/frame 0x7fffffffea90 > Uptime: 17m45s > Dumping 327 out of 3990 MB:..5%..15%..25%..35%..44%..54%..64%..74%..84%..93% > > Reading symbols from /boot/kernel/linux.ko...done. > Loaded symbols for /boot/kernel/linux.ko > Reading symbols from /boot/kernel/linux_common.ko...done. > Loaded symbols for /boot/kernel/linux_common.ko > Reading symbols from /boot/kernel/acpi_ibm.ko...done. > Loaded symbols for /boot/kernel/acpi_ibm.ko > Reading symbols from /boot/kernel/iwm7260fw.ko...done. > Loaded symbols for /boot/kernel/iwm7260fw.ko > Reading symbols from /boot/kernel/coretemp.ko...done. > Loaded symbols for /boot/kernel/coretemp.ko > Reading symbols from /boot/kernel/if_iwm.ko...done. > Loaded symbols for /boot/kernel/if_iwm.ko > Reading symbols from /boot/kernel/acpi_video.ko...done. > Loaded symbols for /boot/kernel/acpi_video.ko > Reading symbols from /boot/kernel/nullfs.ko...done. > Loaded symbols for /boot/kernel/nullfs.ko > Reading symbols from /boot/kernel/fdescfs.ko...done. > Loaded symbols for /boot/kernel/fdescfs.ko > Reading symbols from /boot/kernel/i915kms.ko...done. > Loaded symbols for /boot/kernel/i915kms.ko > Reading symbols from /boot/kernel/drm2.ko...done. > Loaded symbols for /boot/kernel/drm2.ko > Reading symbols from /boot/kernel/iicbus.ko...done. > Loaded symbols for /boot/kernel/iicbus.ko > Reading symbols from /boot/kernel/iic.ko...done. > Loaded symbols for /boot/kernel/iic.ko > Reading symbols from /boot/kernel/iicbb.ko...done. > Loaded symbols for /boot/kernel/iicbb.ko > #0š cpustop_handler () at /usr/src/sys/x86/x86/mp_x86.c:1324 > 1324ššššššššššš CPU_SET_ATOMIC(cpu, &stopped_cpus); > (kgdb) bt > #0š cpustop_handler () at /usr/src/sys/x86/x86/mp_x86.c:1324 > #1š 0xffffffff80e29fb4 in ipi_nmi_handler () at > /usr/src/sys/x86/x86/mp_x86.c:1280 > #2š 0xffffffff80d09a79 in trap (frame=0xffffffff8158bef0) > ššš at /usr/src/sys/amd64/amd64/trap.c:188 > #3š 0xffffffff80cec054 in nmi_calltrap () at > /usr/src/sys/amd64/amd64/exception.S:633 > #4š 0xffffffff80e1aaef in acpi_cpu_idle_mwait (mwait_hint=0) at > cpufunc.h:611 > Previous frame inner to this frame (corrupt stack?) > Current language:š auto; currently minimal > > kgdb is over my head, but I can provide more details under some guidance. Use this. diff --git a/sys/kern/sys_procdesc.c b/sys/kern/sys_procdesc.c index 5e8928cb153..174fffc5c66 100644 --- a/sys/kern/sys_procdesc.c +++ b/sys/kern/sys_procdesc.c @@ -398,7 +398,6 @@ procdesc_close(struct file *fp, struct thread *td) * process's reference to the process descriptor when it * calls back into procdesc_reap(). */ - PROC_SLOCK(p); proc_reap(curthread, p, NULL, 0); } else { /*