mirror of
https://gitlab.freedesktop.org/pipewire/wireplumber.git
synced 2026-05-09 08:38:22 +02:00
read-only mirror of https://gitlab.freedesktop.org/pipewire/wireplumber
When WirePlumber exits, it crashes with SIGABRT. The backtrace shows: 7 g_closure_invalidate 10 g_object_unref 15 g_value_unset 16 _wplua_gvalue_userdata___gc 26 close_state (lua_close) 27 wp_plugin_deactivate 33 wp_registry_clear 34 wp_core_dispose Root cause: lua_State is referenced by both the main plugin and each WpLuaScript object. During registry cleanup, scripts call lua_close again on an already-destroyed state, causing use-after-free. Fix: - Add a prepare_shutdown vfunc in WpPlugin. Call it from wp_core_dispose *before* clearing the registry. - Lua plugin implements prepare_shutdown to close its lua_State early, allowing all __gc finalizers to run while GObjects are still alive. - Then clear the lua_State pointer from every WpLuaScript object via wp_lua_script_clear_lua_state(). - Guard WpLuaScript finalize to skip if pointer is already NULL. |
||
|---|---|---|
| docs | ||
| lib | ||
| modules | ||
| po | ||
| src | ||
| subprojects | ||
| tests | ||
| .editorconfig | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| AGENTS.md | ||
| 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/>`_