[ovs-dev] [PATCH] ovs-thread: Issue better diagnostics for locking uninitialized mutexes.

Ben Pfaff blp at nicira.com
Thu May 8 16:23:36 UTC 2014


On Wed, May 07, 2014 at 02:02:21PM -0700, Andy Zhou wrote:
> Acked-by: Andy Zhou <azhou at nicira.com>
> 
> How about fold in the following changes as well?

That's good, thanks.  I made the same change in the TRY_LOCK_FUNCTION
macro too.

I'll push this in a minute.

> diff --git a/lib/ovs-thread.c b/lib/ovs-thread.c
> index 83dfd62..9b6a9a5 100644
> --- a/lib/ovs-thread.c
> +++ b/lib/ovs-thread.c
> @@ -62,7 +62,7 @@ static bool multithreaded;
>   \
>          error = pthread_##TYPE##_##FUN(&l->lock); \
>          if (OVS_UNLIKELY(error)) { \
> -            ovs_abort(error, "pthread_%s_%s failed", #TYPE, #FUN); \
> +            ovs_abort(error, "%s: pthread_%s_%s failed", where, #TYPE, #FUN); \
>          } \
>          l->where = where; \
>   }
> 
> On Tue, May 6, 2014 at 3:15 PM, Ben Pfaff <blp at nicira.com> wrote:
> > This makes the message issued refer to the file and line that called
> > ovs_mutex_lock(), instead of to the file and line *inside*
> > ovs_mutex_lock().
> >
> > Signed-off-by: Ben Pfaff <blp at nicira.com>
> > ---
> >  lib/ovs-thread.c |   10 ++++++++--
> >  1 file changed, 8 insertions(+), 2 deletions(-)
> >
> > diff --git a/lib/ovs-thread.c b/lib/ovs-thread.c
> > index fbdd7fc..83dfd62 100644
> > --- a/lib/ovs-thread.c
> > +++ b/lib/ovs-thread.c
> > @@ -55,7 +55,10 @@ static bool multithreaded;
> >          int error; \
> >   \
> >          /* Verify that 'l' was initialized. */ \
> > -        ovs_assert(l->where); \
> > +        if (OVS_UNLIKELY(!l->where)) { \
> > +            ovs_abort(0, "%s: %s() passed uninitialized ovs_"#TYPE, \
> > +                      where, __func__); \
> > +        } \
> >   \
> >          error = pthread_##TYPE##_##FUN(&l->lock); \
> >          if (OVS_UNLIKELY(error)) { \
> > @@ -77,7 +80,10 @@ LOCK_FUNCTION(rwlock, wrlock);
> >          int error; \
> >   \
> >          /* Verify that 'l' was initialized. */ \
> > -        ovs_assert(l->where); \
> > +        if (OVS_UNLIKELY(!l->where)) { \
> > +            ovs_abort(0, "%s: %s() passed uninitialized ovs_"#TYPE, \
> > +                      where, __func__); \
> > +        } \
> >   \
> >          error = pthread_##TYPE##_##FUN(&l->lock); \
> >          if (OVS_UNLIKELY(error) && error != EBUSY) { \
> > --
> > 1.7.10.4
> >
> > _______________________________________________
> > dev mailing list
> > dev at openvswitch.org
> > http://openvswitch.org/mailman/listinfo/dev



More information about the dev mailing list