Skip to content

gl: Fix crash in cocoa due to race in gst_gl_context_activate()

We create a new context in gst_gl_context_create_thread() and then activate it on the current thread. Thereafter we assume that the current thread continues to be the active thread for that context and call gst_gl_context_fill_info() which asserts that the current thread is the active thread.

However, if at the same time a different thread calls send_message_async(), it will call into gst_gl_window_cocoa_send_message_async() which will schedule the message to be invoked using GCD. That anonymous function will also call gst_gl_context_activate(), which creates a race, which can lead to:

gst_gl_context_fill_info: assertion 'context->priv->active_thread == g_thread_self ()' failed

Fix it by using gst_gl_context_thread_add() to invoke fill_info() on the context.

Edited by Nirbheek Chauhan

Merge request reports