mirror of
https://gitlab.freedesktop.org/pipewire/wireplumber.git
synced 2025-12-20 04:10:03 +01:00
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. |
||
|---|---|---|
| .. | ||
| module-lua-scripting | ||
| module-reserve-device | ||
| dbus-connection-state.h | ||
| flatpak-utils.h | ||
| meson.build | ||
| module-dbus-connection.c | ||
| module-default-nodes-api.c | ||
| module-file-monitor-api.c | ||
| module-log-settings.c | ||
| module-logind.c | ||
| module-mixer-api.c | ||
| module-modem-manager.c | ||
| module-mpris.c | ||
| module-notifications-api.c | ||
| module-portal-permissionstore.c | ||
| module-settings.c | ||
| module-si-audio-adapter.c | ||
| module-si-node.c | ||
| module-si-standard-link.c | ||
| module-standard-event-source.c | ||