Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 3 Jun 2018 00:04:50 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Warner Losh <imp@bsdimp.com>
Cc:        bob prohaska <fbsd@www.zefox.net>, freebsd-arm@freebsd.org
Subject:   Re: panic: Assertion td->td_lock == TDQ_LOCKPTR(tdq) failed at /usr/src/sys/kern/sched_ule.c:2137
Message-ID:  <20180602210450.GK3789@kib.kiev.ua>
In-Reply-To: <CANCZdfpJ7hL_dnJd5kyMkhdT21LnXWxch7ztmN%2BrTk90F53WjQ@mail.gmail.com>
References:  <op.zjvyeypwkndu52@klop.ws> <20180601154153.GA62632@www.zefox.net> <20180602091606.63a1ab37.freebsd.ed.lists@sumeritec.com> <20180602150549.GA68197@www.zefox.net> <CANCZdfq%2BFp6=NDSQB0G9z1L7StcueupzvUiuNs9L-TgTQL=wzA@mail.gmail.com> <20180602193255.GA68908@www.zefox.net> <CANCZdfpJ7hL_dnJd5kyMkhdT21LnXWxch7ztmN%2BrTk90F53WjQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Jun 02, 2018 at 02:39:00PM -0600, Warner Losh wrote:
> On Sat, Jun 2, 2018, 1:32 PM bob prohaska <fbsd@www.zefox.net> wrote:
> 
> > On Sat, Jun 02, 2018 at 09:14:18AM -0600, Warner Losh wrote:
> > >
> > > Do you have r334508? It fixes the OOM falsely triggering.
> > >
> > At the moment sources are at 334456, world and kernel are at
> > 334276.
> >
> > Might it be feasible to stop the present buildworld, update
> > sources and then try to build a new kernel before building
> > world?
> >
> 
> That's recent enough that you should be fine. There might be an lld vs
> binutils ld issue. There was on i386 recently, but I think it was i386
> specific. It's a good risk.

This happens on arm64 ?  In fact, try this.
I did not even compiled the change.

diff --git a/sys/arm64/arm64/swtch.S b/sys/arm64/arm64/swtch.S
index c9843303b1d..4c2c3aca583 100644
--- a/sys/arm64/arm64/swtch.S
+++ b/sys/arm64/arm64/swtch.S
@@ -165,10 +165,9 @@ ENTRY(cpu_switch)
 	mov	x0, x19
 
 	/*
-	 * Release the old thread. This doesn't need to be a store-release
-	 * as the above dsb instruction will provide release semantics.
+	 * Release the old thread.
 	 */
-	str	x2, [x0, #TD_LOCK]
+	stlr	x2, [x0, #TD_LOCK]
 #if defined(SCHED_ULE) && defined(SMP)
 	/* Spin if TD_LOCK points to a blocked_lock */
 	ldr	x2, =_C_LABEL(blocked_lock)



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