wireplumber/modules
Charles 627b003a05 m-permissions-portal: Avoid race condition during shutdown
Attempts to workaround a race condition between daemon thread and
GDBus worker thread during shutdown.

Ubuntu bug: https://bugs.launchpad.net/bugs/2127049

I've not been able to get a symbolic backtrace yet or reproduce it
myself, but the behaviour points to a threading bug. Hypothesis,

Main thread (1, daemon thread) shuts down, unregistering its plugins.
One of the plugins, module-permissions-portal, is triggered to
shutdown.
It tries to clear its GDBus connection handle without disconnecting
its signal handlers.
GDBus thread (2) is in the middle of writing a message on the same
connection handle.
Once finished, it also tries to clear its handle.
The main thread has already taken the signal lock and the signal
handler table ends up in an invalid state, triggering the assert.

I believe this could happen since
wp_portal_permissionstore_plugin_disable is not disconnecting its
signal handlers before trying to clear its DBus object.

See https://bugzilla.gnome.org/show_bug.cgi?id=730296 for more
discussion about this assert in the Glib signal handling code.
2025-10-10 13:04:01 +03:00
..
module-lua-scripting m-lua-scripting: Add enum_params Lua API for WpPipewireObject 2025-08-22 12:15:08 -04:00
module-reserve-device m-reserve-device: cancel get proxy callback properly 2024-11-01 20:46:54 +02:00
dbus-connection-state.h dbus: refactor WpDBus into a plugin called dbus-connection 2023-06-20 12:39:29 +03:00
flatpak-utils.h m-mpris: add MPRIS plugin 2025-07-23 10:19:44 +03:00
meson.build modules: Add notifications-api module 2025-10-01 18:04:58 +03:00
module-dbus-connection.c m-dbus-connection: Add 'plugin.name' and 'bus.system' args 2025-08-29 18:02:59 +03:00
module-default-nodes-api.c metadata: remove wp_metadata_iterator_item_extract() API 2024-02-28 08:15:17 -05:00
module-file-monitor-api.c core: change the component arguments to be WpSpaJson instead of GVariant 2023-05-25 18:29:58 +03:00
module-log-settings.c log: rename back to wp_log_set_level 2024-01-13 16:33:05 +00:00
module-logind.c Improve monitoring of seat state 2024-05-08 13:58:16 +00:00
module-mixer-api.c m-mixer-api: Fix memory in leak wp_mixer_api_set_volume 2024-09-26 14:12:18 +02:00
module-modem-manager.c m-modem-manager: add module for tracking status of voice calls 2025-08-29 18:02:59 +03:00
module-mpris.c m-mpris: add MPRIS plugin 2025-07-23 10:19:44 +03:00
module-notifications-api.c modules: Add notifications-api module 2025-10-01 18:04:58 +03:00
module-portal-permissionstore.c m-permissions-portal: Avoid race condition during shutdown 2025-10-10 13:04:01 +03:00
module-settings.c m-settings: remove all persistent settings if key is null 2024-03-23 09:39:45 +00:00
module-si-audio-adapter.c m-si-audio-adapter: Add new 'item.features.mono' configuration property 2025-10-01 18:59:13 +03:00
module-si-node.c si-linkables: do not fully reset when the underlying proxy is destroyed 2024-03-12 12:44:32 +02:00
module-si-standard-link.c docs: fix various codebase typos Found via codespell -q 3 -S "*.po,./po/*,NEWS.rst" -L bootup,gir,inout 2025-01-28 15:45:54 +01:00
module-standard-event-source.c m-std-event-source: cancel events when the node associated with the si dies 2024-03-22 15:35:22 +02:00