GNOME Bugzilla – Bug 335432
[gst0.10] mixer applet crash when removed, freeze gnome-panel
Last modified: 2010-01-24 01:05:50 UTC
That bug has been described on https://launchpad.net/distros/ubuntu/+source/gnome-applets/+bug/34519 "If you add a second Volume applet to your panel, and then remove it, it freezes the panel. 1. Add a second Volume applet. 2. Right click-> Remove ... Panel freezes On an up-to-date Dapper system. ...." Backtrace of the crash when the applets is removed from the panel: Starting program: /usr/lib/gnome-applets/mixer_applet2 [Thread debugging using libthread_db enabled] [New Thread -1224640832 (LWP 2958)] *** glibc detected *** double free or corruption (fasttop): 0x083ab0d0 *** Program received signal SIGABRT, Aborted.
+ Trace 67119
Thread NaN (LWP 2958)
The minimalist fix for this would be: diff -u -p -r1.50 applet.c --- applet.c 14 Feb 2006 01:07:39 -0000 1.50 +++ applet.c 22 Mar 2006 19:15:46 -0000 @@ -471,8 +471,6 @@ gnome_volume_applet_dispose (GObject *ob GstElement *element = GST_ELEMENT (item->data); gst_element_set_state (element, GST_STATE_NULL); - g_free (g_object_get_data (G_OBJECT (element), - "gnome-volume-applet-name")); gst_object_unref (GST_OBJECT (element)); } g_list_free (applet->elements); In the course of the port-to-gst-0.10 I had changed the g_object_set_data() calls to g_object_set_data_full (..., g_free) and removed this g_free() line, but somehow it seems to have slipped back in when the 0.8 compatibility stuff was added again. Proper patch will follow in a sec.
Created attachment 61789 [details] [review] proposed fix Proposed fix: - minor addition to the gst-0.10 part of the code to make string ownership clearer - fixes for gst-0.8 part of the code (use _set_data_full here too)
Thanks for the patch, it fixes the issue for me
Ping? This should really be committed for 2.14.1 ...
Ok. Commit to HEAD (we haven't branched yet). According to me GNOME 2.14.1 tarbalsl are being rolled on Monday.
Thanks, committed: 2006-04-07 Tim-Philipp Müller <tim at centricular dot net> * applet.c: (gnome_volume_applet_dispose): * load.c: (_filter_func), (create_mixer_collection): Fix double-free on quit which would cause the panel to freeze under certain circumstances (#335432). Make string ownership in 0.10 part of the code clearer; fix 0.8 part of the code to use g_object_set_data_full() as well.
*** Bug 333917 has been marked as a duplicate of this bug. ***