← Back to team overview

touch-packages team mailing list archive

[Bug 1104136] Re: Leaks GVariant's in multiple places

 

quantal has seen the end of its life and is no longer receiving any
updates. Marking the quantal task for this ticket as "Won't Fix".

** Changed in: libdbusmenu (Ubuntu Quantal)
       Status: Triaged => Won't Fix

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to libdbusmenu in Ubuntu.
https://bugs.launchpad.net/bugs/1104136

Title:
  Leaks GVariant's in multiple places

Status in libdbusmenu package in Ubuntu:
  Fix Released
Status in libdbusmenu source package in Precise:
  Fix Released
Status in libdbusmenu source package in Quantal:
  Won't Fix

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 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-manager-gnome (nm-applet) is currently the application with the most menu updates.

  [Other Info]
  Dbusmenu seems to assume in multiple places that g_variant_parse() returns a floating reference. It doesn't, so these GVariant's are leaked.

  It does things like:

    g_variant_builder_add_value(&builder, g_variant_parse(....));

    GVariant *variant = g_variant_parse(....);
    g_variant_ref_sink(variant);
    ...
    g_variant_unref(variant);

  Both of these cases result in a leak

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/libdbusmenu/+bug/1104136/+subscriptions