wireplumber/modules/module-lua-scripting
Chengyi Zhao 2e00356c98 lib: core: add prepare_shutdown vfunc to fix Lua GC crash on exit
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.
2026-05-08 14:44:44 +08:00
..
api permission-manager: Add core_permissions support 2026-04-29 08:20:55 +02:00
wplua m-lua-scripting: Handle both Properties and Lua tables in all Lua APIs 2025-11-24 19:42:07 +02:00
meson.build wplua: move under modules/module-lua-scripting 2022-03-24 09:47:59 +02:00
module.c lib: core: add prepare_shutdown vfunc to fix Lua GC crash on exit 2026-05-08 14:44:44 +08:00
script.c lib: core: add prepare_shutdown vfunc to fix Lua GC crash on exit 2026-05-08 14:44:44 +08:00
script.h lib: core: add prepare_shutdown vfunc to fix Lua GC crash on exit 2026-05-08 14:44:44 +08:00