Date: Tue, 08 Feb 2022 02:23:55 +0000 From: bugzilla-noreply@freebsd.org To: virtualization@FreeBSD.org Subject: [Bug 261198] bhyve host panics with: spin lock 0xffffffff81eac800 (callout) helpanic: spin lock held too long Message-ID: <bug-261198-27103-IpYSagWnnE@https.bugs.freebsd.org/bugzilla/> In-Reply-To: <bug-261198-27103@https.bugs.freebsd.org/bugzilla/> References: <bug-261198-27103@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=261198 --- Comment #6 from Mark Johnston <markj@FreeBSD.org> --- Looks like there is a lock order reversal: sleepq_signal() selects a thread on the sleepqueue, locks it, and then sleepq_remove_thread() stops the td_slpcallout callout, which requires a per-CPU callout lock. softclock_thread() locks the per-CPU callout lock and then acquires the current thread's lock. Usually the thread selected by sleepq_signal() will have its lock set to that of the sleepqueue, and no deadlock is possible. But if the thread is preparing to go to sleep, its lock will still be a scheduler lock. So it's not very easy to hit this deadlock. -- 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-261198-27103-IpYSagWnnE>
