Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 12 Aug 2017 20:38:05 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-bugs@FreeBSD.org
Subject:   [Bug 213903] Kernel crashes from turnstile_broadcast (/usr/src/sys/kern/subr_turnstile.c:837)
Message-ID:  <bug-213903-8-mnFN0ZuimK@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-213903-8@https.bugs.freebsd.org/bugzilla/>
References:  <bug-213903-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=3D213903

Mark Millard <markmi@dsl-only.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |markmi@dsl-only.net

--- Comment #55 from Mark Millard <markmi@dsl-only.net> ---
(In reply to muxx.dev from comment #54)\

Looks  to me like ts=3D=3D0x0 was the starting value
given to turnstile_broadcast in each backtrace
listed in this buzilla bug (213903), for example:

(kgdb) list *0xffffffff80b3a89c
0xffffffff80b3a89c is in turnstile_broadcast
(/usr/src/sys/kern/subr_turnstile.c:837).
832
833             /*
834              * Transfer the blocked list to the pending list.
835              */
836             mtx_lock_spin(&td_contested_lock);
837             TAILQ_CONCAT(&ts->ts_pending, &ts->ts_blocked[queue],
td_lockq);
838             mtx_unlock_spin(&td_contested_lock);
839
840             /*
841              * Give a turnstile to each thread.  The last thread gets
Current language:  auto; currently minimal
(kgdb) backtrace
. . .
#8  0xffffffff80b3a89c in turnstile_broadcast (ts=3D0x0, queue=3D1) at
/usr/src/sys/kern/subr_turnstile.c:837
#9  0xffffffff80ad48cf in __rw_wunlock_hard (c=3D0xfffff800437de858, tid=3D=
<value
optimized out>, file=3D<value optimized out>, line=3D<value optimized out>)=
 at
/usr/src/sys/kern/kern_rwlock.c:1027
. . .

Note that ts=3D=3D0x0 would be a problem for:

TAILQ_CONCAT(&ts->ts_pending, &ts->ts_blocked[queue], td_lockq);

So I wonder if __rw_wunlock_hard is providing a bad ts
value. If yes: the problem then occurs before the
turnstile_broadcast call is made.

--=20
You are receiving this mail because:
You are on the CC list for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-213903-8-mnFN0ZuimK>