Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 24 Nov 2012 10:46:17 -0500
From:      Ryan Stone <rysto32@gmail.com>
To:        Attilio Rao <attilio@freebsd.org>
Cc:        FreeBSD Current <freebsd-current@freebsd.org>
Subject:   Re: Spurious witness warning when destroying spin mtx
Message-ID:  <CAFMmRNwn-d5P=hRxx9gyhNYJ%2B7ycVqzv-4FzXXvZGg0bC81REg@mail.gmail.com>
In-Reply-To: <CAJ-FndDL18oQdFZQh4AKr9NbOc2WxWJoDVjOtkjt%2Bb7w36E_kA@mail.gmail.com>
References:  <CAFMmRNyYccyXFh0r2jC2Q5ynYQH09SiZNguLp8X4JWSX4Lua5w@mail.gmail.com> <CAJ-FndDL18oQdFZQh4AKr9NbOc2WxWJoDVjOtkjt%2Bb7w36E_kA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Nov 24, 2012 at 10:01 AM, Attilio Rao <attilio@freebsd.org> wrote:

> I seriously wonder why right now we don't assume the lock is unheld.
> There are likely historically reasons for that, but I would like to
> know which one are those and eventually fix them out.
> FWIK, all the other locking primitives assume the lock is already
> unheld when destroying and I think it would be good to have that for
> mutexes as well.
>
> Can you please show which lock triggers the panic you saw?
>
> Thanks,
> Attilio
>
>
It was taskqueue_free:

void
taskqueue_free(struct taskqueue *queue)
{

        TQ_LOCK(queue);
        queue->tq_flags &= ~TQ_FLAGS_ACTIVE;
        taskqueue_terminate(queue->tq_threads, queue);
        KASSERT(TAILQ_EMPTY(&queue->tq_active), ("Tasks still running?"));
        KASSERT(queue->tq_callouts == 0, ("Armed timeout tasks"));
        mtx_destroy(&queue->tq_mutex);
        free(queue->tq_threads, M_TASKQUEUE);
        free(queue, M_TASKQUEUE);
}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAFMmRNwn-d5P=hRxx9gyhNYJ%2B7ycVqzv-4FzXXvZGg0bC81REg>