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 <el...@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@entry=0x124df0fda000, > >> api=api@entry=API_OPENGL_CORE, > >> visual=visual@entry=0x7f7ffffbdfd0, share_list=share_list@entry=0x0, > >> driverFunctions=driverFunctions@entry=0x7f7ffffbda60) at > >> main/context.c:1204 > >> 5 0x0000124d27b507ec in st_create_context (api=api@entry=API_OPENGL_CORE, > >> pipe=pipe@entry=0x124dc4910000, visual=visual@entry=0x7f7ffffbdfd0, > >> share=share@entry=0x0, options=options@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 <j...@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@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/mesa-dev > > > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev