I know very little about locking so that's probably a stupid question, but:
Is there a general scheme/rule/proposal how to prevent a mutex that someone is trying to mutex_enter() from being teared down by someone else calling mutex_destroy() on it during that? Specifically, I'm trying to understand what should prevent a thread from destroying a socket's lock (by sofree()/soput()) while unp_gc() is trying to acquire that lock.