** Description changed:

  [ Impact ]
  
- wireplumber aborts with SIGABRT on its shutdown path:
+   wireplumber aborts with SIGABRT on its shutdown path:
  
-   "assertion failed: (handler != NULL)" in invalid_closure_notify()
-   from closure_invoke_notifiers()
+   "assertion failed: (handler != NULL)" in invalid_closure_notify()
+   from closure_invoke_notifiers()
  
- This is one of the highest-volume wireplumber crash signatures on
+   This is one of the highest-volume wireplumber crash signatures on
  errors.ubuntu.com:
+ 
  https://errors.ubuntu.com/problem/a862ecef975d9036153bbb65bf0b0116072763d4
  
- The 0.5.12 permission-store lifecycle fix already released for this bug
- reduced the report rate but did not eliminate it. Resolute at
- 0.5.13-1ubuntu1 still produces reports, most recently LP: #2167080, whose
- core dump gives the full chain.
+   The 0.5.12 permission-store lifecycle fix already released for this
+ bug reduced the report rate but did not eliminate it. Resolute at
+ 0.5.13-1ubuntu1 still produces reports, most recently LP: #2167080,
+ whose core dump gives the full chain.
  
- Root cause now appears to be teardown ordering, not memory corruption.
+   Root cause now appears to be teardown ordering, not memory corruption.
  
  [ Test plan ]
  
- The crash is a shutdown race, so a single run proves nothing. Reproduction
- is statistical.
+   The crash is a shutdown race so reproduction is statistical.
  
- 1. On a resolute install with the archive wireplumber 0.5.13-1ubuntu1,
+   1. On a resolute install with the archive wireplumber 0.5.13-1ubuntu1,
  confirm apport is enabled and /var/crash is empty:
  
-      sudo rm -f /var/crash/_usr_bin_wireplumber.*
-      systemctl --user status wireplumber
+      sudo rm -f /var/crash/_usr_bin_wireplumber.*
+      systemctl --user status wireplumber
  
- 2. Cycle the service repeatedly:
+   2. Cycle the service repeatedly:
  
-      for i in $(seq 1 200); do
-        systemctl --user restart wireplumber
-        sleep 2
-      done
-      ls -l /var/crash/_usr_bin_wireplumber.*
+      for i in $(seq 1 200); do
+        systemctl --user restart wireplumber
+        sleep 2
+      done
+      ls -l /var/crash/_usr_bin_wireplumber.*
  
-    Machines with modem-manager present (the reported trace goes through
-    WpModemManager) reproduce most readily. A laptop with a WWAN card, or
-    any machine where `wpctl status` lists the modem-manager plugin, is the
-    best target.
+      Machines with modem-manager present (the reported trace goes
+ through WpModemManager) reproduce most readily. A laptop with a WWAN
+ card, or any machine where `wpctl status` lists the modem-manager
+ plugin, is the best target.
  
- 3. The other reported trigger is the greeter-to-user session handover,
+   3. The other reported trigger is the greeter-to-user session handover,
  which tears down the lightdm/gdm wireplumber instance. Log in and out
  ~20 times and check /var/crash for a wireplumber crash owned by uid 108
  (lightdm) or the gdm uid.
  
- 4. Repeat 1-3 with 0.5.13-1ubuntu1.1 from resolute-proposed. No
- _usr_bin_wireplumber crash file should appear.
+   4. Repeat 1-3 with 0.5.13-1ubuntu1.1 from resolute-proposed. No
+ usr_bin_wireplumber crash file should appear.
  
  5. Check the journal for the shutdown path being clean:
  
-      journalctl --user -u wireplumber -b | grep -iE
+      journalctl --user -u wireplumber -b | grep -iE
  'assertion|abort|proxy'
  
  6. Regression check: audio must still work normally. Play audio, switch
-    output devices with `wpctl set-default`, suspend and resume, and confirm
-    `wpctl status` lists the same nodes before and after a restart.
+ output sevices with `wpctl set-default`, suspend and resume, and
+ confirm `wpctl status` lists the same nodes before and after a restart.
  
  [ Where problems could occur ]
  
- The change makes wireplumber deactivate objects earlier than it used to, so
- anything that assumed it could still use another plugin during its own
- teardown now runs against a deactivated peer.
+   The change makes wireplumber deactivate objects earlier than it used
+ to, so anything that assumed it could still use another plugin during
+ its own teardown now runs against a deactivated peer.
  
-  * Plugins whose disable() reaches into another plugin: modem-manager (dbus
-    connection), the portal permission store, the reserve-device logic. A
-    mistake here shows up as a different shutdown crash or a hang at exit
-    rather than the assert above, so watch for wireplumber being SIGKILLed
-    by the systemd user manager at logout.
+   * Plugins whose disable() reaches into another plugin: modem-manager (dbus
+     connection), the portal permission store, the reserve-device logic. A
+     mistake here shows up as a different shutdown crash or a hang at exit
+     rather than the assert above, so watch for wireplumber being SIGKILLed
+     by the systemd user manager at logout.
  
-  * Lua scripts are now deactivated before the Lua state is freed. A script
-    that relied on running code during GC finalization would silently stop
-    doing so. In practice this affects the monitors in
-    /usr/share/wireplumber/scripts; a failure would present as devices not
-    being cleanly removed on shutdown, which is harmless at exit but would
-    be visible if it leaked into a restart.
+   * Lua scripts are now deactivated before the Lua state is freed. A script
+     that relied on running code during GC finalization would silently stop
+     doing so. In practice this affects the monitors in
+     /usr/share/wireplumber/scripts; a failure would present as devices not
+     being cleanly removed on shutdown, which is harmless at exit but would
+     be visible if it leaked into a restart.
  
-  * Upstream 0.5.15 also carries a824ae91 ("m-lua-scripting: only hold a
-    strong reference of the Lua state when the script is enabled"), a
-    follow-up that suppresses leaked-proxy warnings introduced by MR 833's
-    earlier deactivation. It is a 140-line refactor wrapping lua_State in a
-    GObject, which is too invasive for an SRU, so it is deliberately not
-    backported. Resolute may therefore log "leaked proxy" warnings at
-    shutdown that stonking does not. These are log noise, not a functional
-    regression.
+   * Upstream 0.5.15 also carries a824ae91 ("m-lua-scripting: only hold a
+     strong reference of the Lua state when the script is enabled"), a
+     follow-up that suppresses leaked-proxy warnings introduced by MR 833's
+     earlier deactivation. It is a 140-line refactor wrapping lua_State in a
+     GObject, which is too invasive for an SRU, so it is deliberately not
+     backported. Resolute may therefore log "leaked proxy" warnings at
+     shutdown that stonking does not. These are log noise, not a functional
+     regression.
  
- * The GLib side of the problem is untouched. glib2.0 (Ubuntu Resolute) is
-   still Triaged on this bug: g_signal_connect_object()'s notifier
-   bookkeeping desyncs when the signal instance is destroyed before the
-   watching object. This upload removes wireplumber's way of reaching that
-   state; it does not fix GLib, so other packages remain exposed.
+   * The GLib side of the problem is untouched. glib2.0 (Ubuntu Resolute)
+ is still Triaged on this bug: g_signal_connect_object()'s
+ notifier bookkeeping desyncs when the signal instance is destroyed
+ before the watching object. This upload removes wireplumber's way of
+ reaching that state; it does not fix GLib, so other packages remain
+ exposed.
  
  [ Other info ]
  
-  * Fixed upstream in 0.5.15, so stonking (0.5.15-1ubuntu2) already has both
-    commits. No regression on release upgrade.
+  * Fixed upstream in 0.5.15, so stonking (0.5.15-1ubuntu2) already has both
+    commits. No regression on release upgrade.
  
-  * The Ubuntu Error Tracker has been receiving reports about this problem.
-    The problem page at
+  * The Ubuntu Error Tracker has been receiving reports about this problem.
+    The problem page at
  
-    https://errors.ubuntu.com/problem/862ecef975d9036153bbb65bf0b0116072763d4
-    
-    contains more details, including versions of packages affected,
-    stacktrace or traceback, and individual crash reports.
+    https://errors.ubuntu.com/problem/862ecef975d9036153bbb65bf0b0116072763d4
  
-  * LP: #2167080 is a duplicate with a fully analysed core dump.
+    contains more details, including versions of packages affected,
+    stacktrace or traceback, and individual crash reports.
+ 
+  * LP: #2167080 is a duplicate with a fully analysed core dump.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2127049

Title:
  wireplumber crashed with SIGABRT; "assertion failed: (handler !=
  NULL)" in invalid_closure_notify() from closure_invoke_notifiers()

To manage notifications about this bug go to:
https://bugs.launchpad.net/glib/+bug/2127049/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to