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

Reply via email to