Hi, I had the exact same issue and would be more than happy to test a diff if available.
On Fri, Jun 8, 2018 at 7:41 PM Visa Hankala <[email protected]> wrote: > On Thu, Jun 07, 2018 at 05:13:06PM -0700, Philip Guenther wrote: > > (The weird "show witness" output for scsi_base.c mutexes is because > > they're on the stack and need to be unlinked from witness before > > returning; that *might* be causing the problem here, but I doubt it. > I'm > > starting on a diff for that part...) > > As long as each lock gets unlocked before it disappears there should be > no problem, or that is the intent anyhow. The use of stack versus the > use of heap should not make a difference here. > > The problem is in the lock initializer macro. Inside the initializer, > there is the assignment > > .lo_type = &(struct lock_type){ .lt_name = __MTX_NAME } > > For correct operation, the compound literal should have static storage > duration. Unfortunately, that is not the case when the initializer > macro is used in block scope. If there is no way to force the storage > duration, the details of lock enrollment to WITNESS need revision > (or the use of the lock initializer macros has to be banned in block > scope...). > > -- Regards, Rashad
