[Mesa-dev] [PATCH] mesa: don't attempt to unlock an unlocked debug state mutex

Jonathan Gray jsg at jsg.id.au
Mon Dec 12 01:10:36 UTC 2016


Previously there was no _mesa_unlock_debug_state() call at all,
one is still retained here for the case where _mesa_lock_debug_state()
is called and did not return NULL (which is documented as being
unlocked).

On Mon, Dec 12, 2016 at 11:40:32AM +1100, Edward O'Callaghan wrote:
> Hold up..
> 
> Does this reintroduce the hang in glsl-fs-loop piglit test with
> MESA_DEBUG=context though? Was that tested? I'm interested to know how
> this got so muddled up in the first place.
> 
> Kind Regards,
> Edward.
> 
> On 12/12/2016 05:21 AM, Eduardo Lima Mitev wrote:
> > Looks good.
> > 
> > Reviewed-by: Eduardo Lima Mitev <elima at igalia.com>
> > 
> > On 12/11/2016 04:42 PM, Jonathan Gray wrote:
> >> Commit 929fcee47e46781c57f2a354ce0a013915c033d1 introduced code that
> >> attempts to unlock an unlocked mutex which is undefined behaviour.
> >>
> >> On OpenBSD this leads to an abort:
> >>
> >> 0  0x0000124dadfa96ba in thrkill () at <stdin>:2
> >> 1  0x0000124dadf3da39 in *_libc_abort () at /usr/src/lib/libc/stdlib/abort.c:52
> >> 2  0x0000124d2c1165b5 in *_libpthread_pthread_mutex_unlock (mutexp=<optimized out>)
> >>     at /usr/src/lib/librthread/rthread_sync.c:221
> >> 3  0x0000124d279c02e4 in init_attrib_groups (ctx=0x124df0fda000) at main/context.c:825
> >> 4  _mesa_initialize_context (ctx=ctx at entry=0x124df0fda000, api=api at entry=API_OPENGL_CORE,
> >>     visual=visual at entry=0x7f7ffffbdfd0, share_list=share_list at entry=0x0,
> >>     driverFunctions=driverFunctions at entry=0x7f7ffffbda60) at main/context.c:1204
> >> 5  0x0000124d27b507ec in st_create_context (api=api at entry=API_OPENGL_CORE,
> >>     pipe=pipe at entry=0x124dc4910000, visual=visual at entry=0x7f7ffffbdfd0,
> >>     share=share at entry=0x0, options=options at entry=0x7f7ffffbe128)
> >>     at state_tracker/st_context.c:545
> >> 6  0x0000124d27b8639f in st_api_create_context (stapi=<optimized out>,
> >>     smapi=0x124d1b608800, attribs=0x7f7ffffbe100, error=0x7f7ffffbe0fc, shared_stctxi=0x0)
> >>     at state_tracker/st_manager.c:669
> >> 7  0x0000124d27cc5b9c in dri_create_context (api=<optimized out>, visual=0x124d8a0f8a00,
> >>     cPriv=0x124de473f240, major_version=<optimized out>, minor_version=<optimized out>,
> >>     flags=<optimized out>, notify_reset=false, error=0x7f7ffffbe2b4,
> >>     sharedContextPrivate=0x0) at dri_context.c:123
> >> 8  0x0000124d27cc5029 in driCreateContextAttribs (screen=0x124d8a0f8400,
> >>     api=<optimized out>, config=0x124d8a0f8a00, shared=<optimized out>,
> >>     num_attribs=<optimized out>, attribs=<optimized out>, error=0x7f7ffffbe2b4,
> >>     data=0x124d77814a00) at dri_util.c:448
> >> 9  0x0000124d8e109b00 in drisw_create_context_attribs (base=0x124df3e08700,
> >>     config_base=0x124d7a0e7300, shareList=<optimized out>, num_attribs=<optimized out>,
> >>     attribs=<optimized out>, error=0x7f7ffffbe2b4) at drisw_glx.c:476
> >> 10 0x0000124d8e104b4a in glXCreateContextAttribsARB (dpy=0x124d533f0000,
> >>     config=0x124d7a0e7300, share_context=0x0, direct=1, attrib_list=0x7f7ffffbe300)
> >>     at create_context.c:78
> >>
> >> Signed-off-by: Jonathan Gray <jsg at jsg.id.au>
> >> ---
> >>  src/mesa/main/debug_output.c | 5 ++---
> >>  1 file changed, 2 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/src/mesa/main/debug_output.c b/src/mesa/main/debug_output.c
> >> index 48dbbb3..bc933db 100644
> >> --- a/src/mesa/main/debug_output.c
> >> +++ b/src/mesa/main/debug_output.c
> >> @@ -1282,14 +1282,13 @@ _mesa_init_debug_output(struct gl_context *ctx)
> >>         */
> >>        struct gl_debug_state *debug = _mesa_lock_debug_state(ctx);
> >>        if (!debug) {
> >> -         goto done;
> >> +         return;
> >>        }
> >>        debug->DebugOutput = GL_TRUE;
> >>        debug->LogToStderr = GL_TRUE;
> >>        ctx->Const.ContextFlags |= GL_CONTEXT_FLAG_DEBUG_BIT;
> >> +      _mesa_unlock_debug_state(ctx);
> >>     }
> >> -done:
> >> -   _mesa_unlock_debug_state(ctx);
> >>  }
> >>  
> >>  
> >>
> > 
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> > 
> 





More information about the mesa-dev mailing list