Leak in method call handlers for calls that don't require a reply
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
DBus Menu |
Fix Released
|
Medium
|
Chris Coulson | ||
libdbusmenu (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Precise |
Fix Released
|
High
|
Unassigned | ||
Quantal |
Won't Fix
|
High
|
Unassigned |
Bug Description
[Impact]
* Affected applications with a high number of menu updates reach the maximum value allowed for the ID of a menuitem, and rejects further menu changes. Because the application underneath the menu has already removed the underlying actual GtkMenuItem objects, it is impossible to activate the items -- to effect the actions linked to the menuitems.
* Some indicators and applications have a relatively high and climbing memory usage due to the way they build menus to be displayed in the panel.
[Test Case]
* Run nm-applet for a while (multiple days without shutdown, without killing the application), notice whether the menus are still usable.
* Run indicators for a while, observe memory usage.
[Regression Potential]
Indicators with a very high amount of updates may be affected as circling back past the maximum value, if a new menu item is created with an ID still in use by a menuitem that has not been removed yet, neither or only one of the two menu items might be available to be clicked -- this could confuse users or cause error messages to be displayed.
Risk is low however since network-
[Other Info]
We get tonnes of these in Firefox:
==16593== 16,032 (1,152 direct, 14,880 indirect) bytes in 12 blocks are definitely lost in loss record 8,169 of 8,180
==16593== at 0x4C2CD7B: malloc (in /usr/lib/
==16593== by 0xBC83410: g_malloc (gmem.c:159)
==16593== by 0xBC98522: g_slice_alloc (gslice.c:1003)
==16593== by 0xBC98A75: g_slice_alloc0 (gslice.c:1029)
==16593== by 0xBA164A4: g_type_
==16593== by 0xB9F9E37: g_object_
==16593== by 0xB9FB920: g_object_newv (gobject.c:1638)
==16593== by 0xB9FBF6B: g_object_new (gobject.c:1548)
==16593== by 0xDC09C03: _g_dbus_
==16593== by 0xDBF129E: validate_
==16593== by 0xDBF282A: on_worker_
==16593== by 0xDC06257: _g_dbus_
==16593== by 0xDB9EA4D: g_simple_
==16593== by 0xDB9EB7B: complete_in_idle_cb (gsimpleasyncre
==16593== by 0xBC7D5C4: g_main_
==16593== by 0xBC7D907: g_main_
==16593== by 0xBC7DD71: g_main_loop_run (gmain.c:3553)
==16593== by 0xDC03D95: gdbus_shared_
==16593== by 0xBCA15F4: g_thread_proxy (gthread.c:798)
==16593== by 0x5643F9E: start_thread (pthread_
==16593== by 0x59500CC: clone (clone.S:114)
Basically, dbusmenu needs to unref the GDBusMethodInvo
I've got a patch that fixes this already
Related branches
- Charles Kerr (community): Approve
- PS Jenkins bot (community): Approve (continuous-integration)
-
Diff: 30 lines (+6/-0)1 file modifiedlibdbusmenu-glib/server.c (+6/-0)
Changed in libdbusmenu: | |
status: | New → In Progress |
assignee: | nobody → Chris Coulson (chrisccoulson) |
importance: | Undecided → Medium |
Changed in libdbusmenu: | |
status: | In Progress → Fix Committed |
Changed in libdbusmenu (Ubuntu): | |
importance: | Undecided → High |
status: | New → In Progress |
Changed in libdbusmenu: | |
status: | Fix Committed → Fix Released |
description: | updated |
Changed in libdbusmenu (Ubuntu Precise): | |
status: | New → Triaged |
Changed in libdbusmenu (Ubuntu Quantal): | |
status: | New → Triaged |
Changed in libdbusmenu (Ubuntu Precise): | |
importance: | Undecided → High |
Changed in libdbusmenu (Ubuntu Quantal): | |
importance: | Undecided → High |
This bug was fixed in the package libdbusmenu - 12.10.2-0ubuntu2
---------------
libdbusmenu (12.10.2-0ubuntu2) raring; urgency=low
* Backport trunk fixes from Mathieu Trudel-Lapierre and Chris Coulson
- r438 "Remove uses of g_type_init" (lp: #1102471) for current glib
- r439 "Fix a memory leak" (lp: #1103050)
- r440 "Fix multiple leaks due to improper use of g_variant_parse()"
(lp: #1104136)"
-- Sebastien Bacher <email address hidden> Wed, 30 Jan 2013 12:10:31 +0100