[Bug 643087] pulsesink: deadlock in gst_pulseringbuffer_open_device

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Thu Feb 24 04:25:35 PST 2011


https://bugzilla.gnome.org/show_bug.cgi?id=643087
  GStreamer | gst-plugins-good | git

--- Comment #13 from Sebastian Dröge <slomo at circular-chaos.org> 2011-02-24 12:25:33 UTC ---
(In reply to comment #12)
>    ringbuffer = GST_PULSERING_BUFFER_CAST (object);
> 
> +  /* why is this not protected by the mainloop lock? */
>    gst_pulsering_destroy_context (ringbuffer);
>    G_OBJECT_CLASS (ring_parent_class)->finalize (object);

Because the mainloop should not run anymore at this point, everything should be
cleaned up already when going back to NULL state.

> @@ -451,6 +452,8 @@ gst_pulseringbuffer_open_device (GstRingBuffer * buf)
>    else
>      pbuf->context_name = g_strdup (psink->client_name);
> 
> +  /* is it really necessary to take this lock here rather than just
> +     after the g_mutex_unlock (pa_shared_resource_mutex) below? */
>    pa_threaded_mainloop_lock (mainloop);
> 
>    g_mutex_lock (pa_shared_resource_mutex);

I think it is because it might create a new pulse context with that mainloop if
none exists already.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list