mirror of
https://gitlab.freedesktop.org/pipewire/wireplumber.git
synced 2026-02-04 22:30:28 +01:00
read-only mirror of https://gitlab.freedesktop.org/pipewire/wireplumber
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. |
||
|---|---|---|
| docs | ||
| lib | ||
| modules | ||
| po | ||
| src | ||
| subprojects | ||
| tests | ||
| .editorconfig | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| LICENSE | ||
| Makefile | ||
| meson.build | ||
| meson_options.txt | ||
| NEWS.rst | ||
| README.rst | ||
| wp-uninstalled.sh | ||
WirePlumber =========== .. image:: https://gitlab.freedesktop.org/pipewire/wireplumber/badges/master/pipeline.svg :alt: Pipeline status .. image:: https://scan.coverity.com/projects/21488/badge.svg :alt: Coverity Scan Build Status .. image:: https://img.shields.io/badge/license-MIT-green :alt: License .. image:: https://img.shields.io/badge/dynamic/json?color=informational&label=tag&query=%24%5B0%5D.name&url=https%3A%2F%2Fgitlab.freedesktop.org%2Fapi%2Fv4%2Fprojects%2F2941%2Frepository%2Ftags :alt: Tag WirePlumber is a modular session / policy manager for `PipeWire <https://pipewire.org>`_ and a GObject-based high-level library that wraps PipeWire's API, providing convenience for writing the daemon's modules as well as external tools for managing PipeWire. The WirePlumber daemon implements the session & policy management service. It follows a modular design, having plugins that implement the actual management functionality. The WirePlumber Library provides API that allows you to extend the WirePlumber daemon, to write management or status tools for PipeWire (apps that don't do actual media streaming) and to write custom session managers for embedded devices. Documentation ------------- The latest version of the documentation is available online `here <https://pipewire.pages.freedesktop.org/wireplumber/>`_