https://gitlab.gnome.org/GNOME/glib/-/issues/803
Basically, if destruction of a GSource and its associated GMainContext are
not synchronised, Then the GSource destruction can access freed
GMainContext resources and cause a crash. This is not super common but
can happen.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2405>
return GST_FLOW_OK;
out:
- g_mutex_unlock (&self->lock);
if (timeout) {
g_source_destroy (timeout);
g_source_unref (timeout);
}
+ /* Keep the unlock after the destruction of the timeout source to workaround
+ * https://gitlab.gnome.org/GNOME/glib/-/issues/803
+ */
+ g_mutex_unlock (&self->lock);
return ret;
}