st/mesa: destroy pipe_context before destroying st_context (v2)
authorMarek Olšák <marek.olsak@amd.com>
Fri, 20 Jan 2017 01:26:42 +0000 (02:26 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 24 Jan 2017 22:52:01 +0000 (23:52 +0100)
commitd9ef54923804d5fe44a1d3ad5c29e9b8e8382359
treeb62dca2809e729b4a10b6ffe8649a88e6fb72e64
parentdd65f0efc91418bbafd5cc4b63840b5a734d43d1
st/mesa: destroy pipe_context before destroying st_context (v2)

If radeonsi starts compiling an optimized shader variant asynchronously
with a GL debug callback set and the application destroys the GL context,
radeonsi crashes when trying to write shader stats into the debug output
of a non-existent context after compilation, because st/mesa was destroyed
before pipe_context.

Firefox with WebGL2 enabled hits this bug.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99456

v2: protect against a double destroy in st_create_context_priv and callers.

Cc: 17.0 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/mesa/state_tracker/st_context.c