diff options
Diffstat (limited to 'media-video/pipewire/files/0.3.77/0001-gst-prevent-crash-stopping-device-provider.patch')
-rw-r--r-- | media-video/pipewire/files/0.3.77/0001-gst-prevent-crash-stopping-device-provider.patch | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/media-video/pipewire/files/0.3.77/0001-gst-prevent-crash-stopping-device-provider.patch b/media-video/pipewire/files/0.3.77/0001-gst-prevent-crash-stopping-device-provider.patch new file mode 100644 index 000000000000..9b6373da1390 --- /dev/null +++ b/media-video/pipewire/files/0.3.77/0001-gst-prevent-crash-stopping-device-provider.patch @@ -0,0 +1,34 @@ +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 <philn@igalia.com> +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 |