https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/140374d2071e6204fded4ca65645d4e9a3dd053e https://bugs.webkit.org/show_bug.cgi?id=259735 From 140374d2071e6204fded4ca65645d4e9a3dd053e Mon Sep 17 00:00:00 2001 From: Philippe Normand Date: Fri, 4 Aug 2023 10:01:07 +0100 Subject: [PATCH] gst: Prevent a crash when stopping device provider The provider might fail to connect to the PipeWire core when starting up, so when stopping we need to check the core is valid before attempting to acquire a mutex on its loop. --- a/src/gst/gstpipewiredeviceprovider.c +++ b/src/gst/gstpipewiredeviceprovider.c @@ -665,11 +665,16 @@ gst_pipewire_device_provider_stop (GstDeviceProvider * provider) { GstPipeWireDeviceProvider *self = GST_PIPEWIRE_DEVICE_PROVIDER (provider); - pw_thread_loop_lock (self->core->loop); + /* core might be NULL if we failed to connect in _start. */ + if (self->core != NULL) { + pw_thread_loop_lock (self->core->loop); + } GST_DEBUG_OBJECT (self, "stopping provider"); g_clear_pointer ((struct pw_proxy**)&self->registry, pw_proxy_destroy); - pw_thread_loop_unlock (self->core->loop); + if (self->core != NULL) { + pw_thread_loop_unlock (self->core->loop); + } g_clear_pointer (&self->core, gst_pipewire_core_release); } -- GitLab