[Bug 204633] If INVARIANTS is enabled, free() may attempt to acquire sleeping lock

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Tue Nov 17 18:40:17 UTC 2015


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=204633

Mark Johnston <markj at FreeBSD.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |markj at FreeBSD.org

--- Comment #1 from Mark Johnston <markj at FreeBSD.org> ---
I think this indicates a bug in the caller rather than UMA. The nomenclature is
a bit confusing: a sleep mutex is just a "default" mutex, i.e. a non-spin
mutex. When a thread blocks on a sleep mutex, it enters bounded sleep; "sleep"
in the free(9) man page refers to unbounded sleep.

The assertion is failing because the thread holds a spin mutex or a critical
section, in which case it is not valid to try and acquire a sleep mutex. It
could probably be triggered in a non-INVARIANTS kernel too, since
uma_zfree_arg() will attempt to acquire the corresponding zone lock, which is
also a sleep mutex.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list