Date: Fri, 28 Jul 2017 19:15:47 +0000 From: bugzilla-noreply@freebsd.org To: freebsd-bugs@FreeBSD.org Subject: [Bug 219399] System panics after several hours of 14-threads-compilation orgies using poudriere on AMD Ryzen... Message-ID: <bug-219399-8-D4d4f26sG9@https.bugs.freebsd.org/bugzilla/> In-Reply-To: <bug-219399-8@https.bugs.freebsd.org/bugzilla/> References: <bug-219399-8@https.bugs.freebsd.org/bugzilla/>
next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D219399 --- Comment #184 from Mark Millard <markmi@dsl-only.net> --- (In reply to Nils Beyer from comment #183) For: #3 0xffffffff80a6b9e3 in panic (fmt=3D<value optimized out>) at /usr/src/sys/kern/kern_shutdown.c:690 #4 0xffffffff80a4cf71 in _mtx_lock_spin_cookie (c=3D<value optimized out>, v=3D<value optimized out>, tid=3D18446735290631902560, opts=3D<value optimi= zed out>, file=3D<value optimized out>,=20 line=3D<value optimized out>) at /usr/src/sys/kern/kern_mutex.c:672 I looked up the panic call at: /usr/src/sys/kern/kern_mutex.c:672 It is the one in: static void _mtx_lock_spin_failed(struct mtx *m) { struct thread *td; td =3D mtx_owner(m); /* If the mutex is unlocked, try again. */ if (td =3D=3D NULL) return; printf( "spin lock %p (%s) held by %p (tid %d) too long\n", m, m->lock_object.lo_name, td, td->td_tid); #ifdef WITNESS witness_display_spinlock(&m->lock_object, td, printf); #endif panic("spin lock held too long"); } So the duration of holding the lock is involved in hitting this specific panic. In _mtx_lock_spin_cookie there is: for (;;) { if (v =3D=3D MTX_UNOWNED) { if (_mtx_obtain_lock_fetch(m, &v, tid)) break; continue; } /* Give interrupts a chance while we spin. */ spinlock_exit(); do { if (lda.spin_cnt < 10000000) { lock_delay(&lda); } else { lda.spin_cnt++; if (lda.spin_cnt < 60000000 || kdb_active || panicstr !=3D NULL) DELAY(1); else _mtx_lock_spin_failed(m); cpu_spinwait(); } v =3D MTX_READ_VALUE(m); } while (v !=3D MTX_UNOWNED); spinlock_enter(); } So apparently lda.spin_cnt made it to 60000000 or beyond. --=20 You are receiving this mail because: You are the assignee for the bug.=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-219399-8-D4d4f26sG9>