From 717ad2091209bf3b736cfd9784ca1e710a5020a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Fri, 12 Jul 2013 10:08:26 +0200 Subject: [PATCH] inputselector: Deactivate and remove pad without the inputselector lock Otherwise we might get deadlocks caused by lock order inversion: During the chain function the stream lock is first locked and then the inputselector lock. During pad release we first locked the inputselector lock and then deactivating the pad would lock the stream lock. There's no reason why the inputselector lock should be required while deactivating and removing the pad, it's only needed before. https://bugzilla.gnome.org/show_bug.cgi?id=704002 --- plugins/elements/gstinputselector.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/elements/gstinputselector.c b/plugins/elements/gstinputselector.c index 6fcda93470..6c1952c101 100644 --- a/plugins/elements/gstinputselector.c +++ b/plugins/elements/gstinputselector.c @@ -1699,10 +1699,10 @@ gst_input_selector_release_pad (GstElement * element, GstPad * pad) sel->active_sinkpad = NULL; } sel->n_pads--; + GST_INPUT_SELECTOR_UNLOCK (sel); gst_pad_set_active (pad, FALSE); gst_element_remove_pad (GST_ELEMENT (sel), pad); - GST_INPUT_SELECTOR_UNLOCK (sel); } static void