GNOME Bugzilla – Bug 654172
gnome-control-center crashed with SIGSEGV in g_type_instance_get_private() (device_services_changed)
Last modified: 2012-01-09 11:00:45 UTC
this report has been filed here: https://bugs.launchpad.net/ubuntu/+source/gnome-bluetooth/+bug/805311 "crashed while trying to manage sound preferences for a bluetooth headset." gnome-bluetooth version is 3.1.3-0ubuntu1 backtrace: ".
+ Trace 227694
Thread 1 (Thread 19273)
This looks like the device_services_changed signal handler is never disconnected when the client dies. And looking at the code, that seems to be the case. Same for the device_changed signal handler. I believe both should be disconnected in the finalize function like the other signal handlers.
That portion of the code is absolutely too fragile because of dbus-glib.
So I have two patches that seem to fix the crashes for me. The second one is quite horrible, but... well, that's with minimal impact on the code. The real fix is already on master, with the move to gdbus (at least, I hope it doesn't crash there). But for 3.2, we still need something, and that's what I'm going to use. Note that bug 661118, bug 661172, bug 661173 and bug 661177 are likely all duplicate of this bug.
Created attachment 198767 [details] [review] lib: Disconnect signals from adapters and devices on finalize This avoids some crashes. https://bugzilla.gnome.org/show_bug.cgi?id=661118
Created attachment 198768 [details] [review] lib: Do not leak proxies for detectable interfaces of devices This avoids signals that will cause crashes.
*** Bug 661118 has been marked as a duplicate of this bug. ***
*** Bug 661172 has been marked as a duplicate of this bug. ***
*** Bug 661173 has been marked as a duplicate of this bug. ***
*** Bug 661177 has been marked as a duplicate of this bug. ***
Attachment 198767 [details] pushed as 8be8b92 - lib: Disconnect signals from adapters and devices on finalize Attachment 198768 [details] pushed as f591ab0 - lib: Do not leak proxies for detectable interfaces of devices
*** Bug 666203 has been marked as a duplicate of this bug. ***