Several leaks in g_settings_new() [g_object_new()] from ccsGSettingsNewNoPath() [ccs_gsettings_interface_wrapper.c:184]
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Compiz |
Fix Released
|
Medium
|
Sam Spilsbury | ||
0.9.8 |
Won't Fix
|
Medium
|
Unassigned | ||
compiz (Ubuntu) |
Fix Released
|
Medium
|
Sam Spilsbury |
Bug Description
Several leaks in g_settings_new() [g_object_new()] from ccsGSettingsNew
==9349== 64 bytes in 1 blocks are possibly lost in loss record 753 of 1,327
==9349== at 0x4C29E46: calloc (in /usr/lib/
==9349== by 0x6E32738: g_malloc0 (in /lib/x86_
==9349== by 0x7E210E4: g_closure_
==9349== by 0x7E227BD: g_signal_
==9349== by 0x7E37027: g_signal_new (in /usr/lib/
==9349== by 0x7E26A88: ??? (in /usr/lib/
==9349== by 0x7E40925: g_type_class_ref (in /usr/lib/
==9349== by 0x7E405BE: g_type_class_ref (in /usr/lib/
==9349== by 0x7E28ECC: g_object_new_valist (in /usr/lib/
==9349== by 0x7E29373: g_object_new (in /usr/lib/
==9349== by 0xB1E24F8: ccsGSettingsWra
==9349== by 0xAFCF5FF: initBackend (gsettings.c:468)
==9349==
==9349== 64 bytes in 1 blocks are possibly lost in loss record 754 of 1,327
==9349== at 0x4C29E46: calloc (in /usr/lib/
==9349== by 0x6E32738: g_malloc0 (in /lib/x86_
==9349== by 0x7E210E4: g_closure_
==9349== by 0x7E227BD: g_signal_
==9349== by 0x7E37027: g_signal_new (in /usr/lib/
==9349== by 0xB492226: ??? (in /usr/lib/
==9349== by 0x7E40925: g_type_class_ref (in /usr/lib/
==9349== by 0x7E28ECC: g_object_new_valist (in /usr/lib/
==9349== by 0x7E29373: g_object_new (in /usr/lib/
==9349== by 0xB1E24F8: ccsGSettingsWra
==9349== by 0xAFCF5FF: initBackend (gsettings.c:468)
==9349== by 0xA316D4A: ccsSetBackendDe
==9349==
==9349== 64 bytes in 1 blocks are possibly lost in loss record 755 of 1,327
==9349== at 0x4C29E46: calloc (in /usr/lib/
==9349== by 0x6E32738: g_malloc0 (in /lib/x86_
==9349== by 0x7E210E4: g_closure_
==9349== by 0x7E227BD: g_signal_
==9349== by 0x7E37027: g_signal_new (in /usr/lib/
==9349== by 0xB492284: ??? (in /usr/lib/
==9349== by 0x7E40925: g_type_class_ref (in /usr/lib/
==9349== by 0x7E28ECC: g_object_new_valist (in /usr/lib/
==9349== by 0x7E29373: g_object_new (in /usr/lib/
==9349== by 0xB1E24F8: ccsGSettingsWra
==9349== by 0xAFCF5FF: initBackend (gsettings.c:468)
==9349== by 0xA316D4A: ccsSetBackendDe
==9349==
==9349== 64 bytes in 1 blocks are possibly lost in loss record 756 of 1,327
==9349== at 0x4C29E46: calloc (in /usr/lib/
==9349== by 0x6E32738: g_malloc0 (in /lib/x86_
==9349== by 0x7E210E4: g_closure_
==9349== by 0x7E227BD: g_signal_
==9349== by 0x7E37027: g_signal_new (in /usr/lib/
==9349== by 0xB4922CE: ??? (in /usr/lib/
==9349== by 0x7E40925: g_type_class_ref (in /usr/lib/
==9349== by 0x7E28ECC: g_object_new_valist (in /usr/lib/
==9349== by 0x7E29373: g_object_new (in /usr/lib/
==9349== by 0xB1E24F8: ccsGSettingsWra
==9349== by 0xAFCF5FF: initBackend (gsettings.c:468)
==9349== by 0xA316D4A: ccsSetBackendDe
==9349==
==9349== 64 bytes in 1 blocks are possibly lost in loss record 757 of 1,327
==9349== at 0x4C29E46: calloc (in /usr/lib/
==9349== by 0x6E32738: g_malloc0 (in /lib/x86_
==9349== by 0x7E210E4: g_closure_
==9349== by 0x7E227BD: g_signal_
==9349== by 0x7E37027: g_signal_new (in /usr/lib/
==9349== by 0xB49231C: ??? (in /usr/lib/
==9349== by 0x7E40925: g_type_class_ref (in /usr/lib/
==9349== by 0x7E28ECC: g_object_new_valist (in /usr/lib/
==9349== by 0x7E29373: g_object_new (in /usr/lib/
==9349== by 0xB1E24F8: ccsGSettingsWra
==9349== by 0xAFCF5FF: initBackend (gsettings.c:468)
==9349== by 0xA316D4A: ccsSetBackendDe
==9349==
Related branches
- Daniel van Vugt: Approve
- PS Jenkins bot (community): Approve (continuous-integration)
-
Diff: 38 lines (+20/-0)2 files modifiedtests/compiz.supp (+10/-0)
tests/experimental-memcheck/compiz.supp (+10/-0)
Changed in compiz (Ubuntu): | |
status: | New → Triaged |
importance: | Undecided → Medium |
Changed in compiz: | |
assignee: | nobody → Sam Spilsbury (smspillaz) |
Changed in compiz: | |
assignee: | nobody → Sam Spilsbury (smspillaz) |
Changed in compiz (Ubuntu): | |
assignee: | nobody → Sam Spilsbury (smspillaz) |
Changed in compiz: | |
status: | Triaged → In Progress |
Changed in compiz (Ubuntu): | |
status: | Triaged → In Progress |
Changed in compiz: | |
status: | In Progress → Fix Committed |
Changed in compiz: | |
status: | Fix Committed → Fix Released |
I don't think this is a leak in compiz.
The "??" function in the valgrind trace is g_settings_ class_init, which is called once when the class is first instantiated. It creates a bunch of signals (eg, g_signal_new in http:// git.gnome. org/browse/ glib/tree/ gio/gsettings. c#n641), and as far as I can tell, never gets rid of them. In fact, searching the glib documentation, it seems like there's no way to get rid of a signal once it is created, as it is global program state.
I'd recommend changing this to "Invalid" and updating the supressions file.
(Hint: The GLib/GIO supressions file was already imported into experimental- memcheck/ compiz. supp - I'd suggest using the suppressions from there).