[Banshee-List] Memory usage/leak in ListView.PaintHeaderCell?



Hey all,

I was trying to track down the Last.fm memory leak
[http://bugzilla.gnome.org/show_bug.cgi?id=523646] using heap-buddy
[http://www.mono-project.com/HeapBuddy].

Ran this:
$ cd bin
$ mono --profile=heap-buddy:outfile Nereid.exe
$ heap-buddy outfile backtraces > banshee_memory.txt

While it was running, I switched to a last.fm station and just let it
sit there for 20+ minutes.  Overall memory usage grew a lot.

I've attached banshee_memory.txt.  Looks like there is something about
Last.fm that's triggering a heck of a lot of ListView memory usage.
Here are the top two:

Backtrace                                            #
Total       AvSz     AvAge
type=Hyena.Data.Gui.CellContext   167090    10.2M    64.0      0.0
Hyena.Data.Gui.ListView`1:PaintHeaderCell

type=double[]                                   167090    6.4M
40.0       0.0
Hyena.Gui.CairoExtensions:ColorFromHsb
Hyena.Gui.CairoExtensions:ColorShade
Hyena.Gui.Theming.GtkTheme:DrawHeaderSeparator
Hyena.Data.Gui.ListView`1:PaintHeaderCell

Scott, Aaron - ideas?  Why is PaintHeaderCell being called so often,
and why does it use so much memory?

Regards,

Gabriel
                     Backtrace                        #   Total AvSz AvAge

                   type=Hyena.Data.Gui.CellContext 167090 10.2M 64.0   0.0
         Hyena.Data.Gui.ListView`1:PaintHeaderCell                        
             Hyena.Data.Gui.ListView`1:PaintHeader                        
           Hyena.Data.Gui.ListView`1:OnExposeEvent                        
                         Gtk.Widget:exposeevent_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

                                     type=double[] 167090  6.4M 40.0   0.0
            Hyena.Gui.CairoExtensions:ColorFromHsb                        
              Hyena.Gui.CairoExtensions:ColorShade                        
    Hyena.Gui.Theming.GtkTheme:DrawHeaderSeparator                        
         Hyena.Data.Gui.ListView`1:PaintHeaderCell                        
             Hyena.Data.Gui.ListView`1:PaintHeader                        
           Hyena.Data.Gui.ListView`1:OnExposeEvent                        
                         Gtk.Widget:exposeevent_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

                                     type=double[] 167090  6.4M 40.0   0.0
            Hyena.Gui.CairoExtensions:ColorFromHsb                        
              Hyena.Gui.CairoExtensions:ColorShade                        
    Hyena.Gui.Theming.GtkTheme:DrawHeaderSeparator                        
         Hyena.Data.Gui.ListView`1:PaintHeaderCell                        
             Hyena.Data.Gui.ListView`1:PaintHeader                        
           Hyena.Data.Gui.ListView`1:OnExposeEvent                        
                         Gtk.Widget:exposeevent_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

                                     type=double[] 167090  6.4M 40.0   0.0
            Hyena.Gui.CairoExtensions:ColorFromHsb                        
              Hyena.Gui.CairoExtensions:ColorShade                        
    Hyena.Gui.Theming.GtkTheme:DrawHeaderSeparator                        
         Hyena.Data.Gui.ListView`1:PaintHeaderCell                        
             Hyena.Data.Gui.ListView`1:PaintHeader                        
           Hyena.Data.Gui.ListView`1:OnExposeEvent                        
                         Gtk.Widget:exposeevent_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

                                     type=double[] 167090  6.4M 40.0   0.0
            Hyena.Gui.CairoExtensions:ColorFromHsb                        
              Hyena.Gui.CairoExtensions:ColorShade                        
    Hyena.Gui.Theming.GtkTheme:DrawHeaderSeparator                        
         Hyena.Data.Gui.ListView`1:PaintHeaderCell                        
             Hyena.Data.Gui.ListView`1:PaintHeader                        
           Hyena.Data.Gui.ListView`1:OnExposeEvent                        
                         Gtk.Widget:exposeevent_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

                                 type=Gtk.Callback 100679  5.0M 52.0   0.0
                           Gtk.Container:Forall_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

type=Hyena.Gui.AnimatedBox...__CompilerGenerated18 100679  3.1M 32.0   0.0
                  <>c__CompilerGenerated7:MoveNext                        
                      Hyena.Gui.AnimatedBox:ForAll                        
                           Gtk.Container:Forall_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

          type=System.Reflection.ConstructorInfo[] 133672  3.1M 24.0   0.0
                   System.MonoType:GetConstructors                        
                   System.Activator:CreateInstance                        
                   System.Activator:CreateInstance                        
                   System.Activator:CreateInstance                        
                             GLib.Opaque:GetOpaque                        
                  Pango.Layout:get_FontDescription                        
              Hyena.Data.Gui.ColumnCellText:Render                        
        Hyena.Data.Gui.ColumnHeaderCellText:Render                        
         Hyena.Data.Gui.ListView`1:PaintHeaderCell                        
             Hyena.Data.Gui.ListView`1:PaintHeader                        
           Hyena.Data.Gui.ListView`1:OnExposeEvent                        
                         Gtk.Widget:exposeevent_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

          type=System.Reflection.ConstructorInfo[] 133672  3.1M 24.0   0.0
                   System.MonoType:GetConstructors                        
                   System.Activator:CreateInstance                        
                   System.Activator:CreateInstance                        
                   System.Activator:CreateInstance                        
                             GLib.Opaque:GetOpaque                        
                 Pango.Context:get_FontDescription                        
              Hyena.Data.Gui.ColumnCellText:Render                        
        Hyena.Data.Gui.ColumnHeaderCellText:Render                        
         Hyena.Data.Gui.ListView`1:PaintHeaderCell                        
             Hyena.Data.Gui.ListView`1:PaintHeader                        
           Hyena.Data.Gui.ListView`1:OnExposeEvent                        
                         Gtk.Widget:exposeevent_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

                                type=Gdk.Rectangle 133672  3.1M 24.0   0.0
                                 Gdk.Rectangle:New                        
                             Gtk.Style:PaintLayout                        
              Hyena.Data.Gui.ColumnCellText:Render                        
        Hyena.Data.Gui.ColumnHeaderCellText:Render                        
         Hyena.Data.Gui.ListView`1:PaintHeaderCell                        
             Hyena.Data.Gui.ListView`1:PaintHeader                        
           Hyena.Data.Gui.ListView`1:OnExposeEvent                        
                         Gtk.Widget:exposeevent_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

          type=System.Reflection.ConstructorInfo[] 133672  3.1M 24.0   0.0
                   System.MonoType:GetConstructors                        
                   System.Activator:CreateInstance                        
                   System.Activator:CreateInstance                        
                   System.Activator:CreateInstance                        
                             GLib.Opaque:GetOpaque                        
                        Pango.FontDescription:Copy                        
              Hyena.Data.Gui.ColumnCellText:Render                        
        Hyena.Data.Gui.ColumnHeaderCellText:Render                        
         Hyena.Data.Gui.ListView`1:PaintHeaderCell                        
             Hyena.Data.Gui.ListView`1:PaintHeader                        
           Hyena.Data.Gui.ListView`1:OnExposeEvent                        
                         Gtk.Widget:exposeevent_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

                                type=Gdk.Rectangle 133672  3.1M 24.0   0.0
                             Gtk.Style:PaintLayout                        
              Hyena.Data.Gui.ColumnCellText:Render                        
        Hyena.Data.Gui.ColumnHeaderCellText:Render                        
         Hyena.Data.Gui.ListView`1:PaintHeaderCell                        
             Hyena.Data.Gui.ListView`1:PaintHeader                        
           Hyena.Data.Gui.ListView`1:OnExposeEvent                        
                         Gtk.Widget:exposeevent_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

                                       type=byte[] 133672  2.8M 21.8   0.0
                     System.Text.Encoding:GetBytes                        
                GLib.Marshaller:StringToPtrGStrdup                        
                              Pango.Layout:SetText                        
              Hyena.Data.Gui.ColumnCellText:Render                        
        Hyena.Data.Gui.ColumnHeaderCellText:Render                        
         Hyena.Data.Gui.ListView`1:PaintHeaderCell                        
             Hyena.Data.Gui.ListView`1:PaintHeader                        
           Hyena.Data.Gui.ListView`1:OnExposeEvent                        
                         Gtk.Widget:exposeevent_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

type=Hyena.Gui.AnimatedBox/<>c__CompilerGenerated7 100679  2.7M 28.0   0.0
                 Hyena.Gui.AnimatedBox:get_Widgets                        
                      Hyena.Gui.AnimatedBox:ForAll                        
                           Gtk.Container:Forall_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

          type=System.Reflection.ConstructorInfo[] 100254  2.7M 28.0   0.0
                   System.MonoType:GetConstructors                        
                   System.Activator:CreateInstance                        
                   System.Activator:CreateInstance                        
                   GLib.ObjectManager:CreateObject                        
                             GLib.Object:GetObject                        
                             GLib.Object:GetObject                        
           Hyena.Gui.PangoCairoHelper:CreateLayout                        
             Hyena.Data.Gui.ListView`1:PaintHeader                        
           Hyena.Data.Gui.ListView`1:OnExposeEvent                        
                         Gtk.Widget:exposeevent_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

                                       type=byte[] 133672  2.5M 20.0   0.0
                     System.Text.Encoding:GetBytes                        
                GLib.Marshaller:StringToPtrGStrdup                        
                             Gtk.Style:PaintLayout                        
              Hyena.Data.Gui.ColumnCellText:Render                        
        Hyena.Data.Gui.ColumnHeaderCellText:Render                        
         Hyena.Data.Gui.ListView`1:PaintHeaderCell                        
             Hyena.Data.Gui.ListView`1:PaintHeader                        
           Hyena.Data.Gui.ListView`1:OnExposeEvent                        
                         Gtk.Widget:exposeevent_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

                                type=System.Type[] 133672  2.5M 20.0   0.0
                   System.Activator:CreateInstance                        
                   System.Activator:CreateInstance                        
                   System.Activator:CreateInstance                        
                             GLib.Opaque:GetOpaque                        
                  Pango.Layout:get_FontDescription                        
              Hyena.Data.Gui.ColumnCellText:Render                        
        Hyena.Data.Gui.ColumnHeaderCellText:Render                        
         Hyena.Data.Gui.ListView`1:PaintHeaderCell                        
             Hyena.Data.Gui.ListView`1:PaintHeader                        
           Hyena.Data.Gui.ListView`1:OnExposeEvent                        
                         Gtk.Widget:exposeevent_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

                                     type=object[] 133672  2.5M 20.0   0.0
                             GLib.Opaque:GetOpaque                        
                  Pango.Layout:get_FontDescription                        
              Hyena.Data.Gui.ColumnCellText:Render                        
        Hyena.Data.Gui.ColumnHeaderCellText:Render                        
         Hyena.Data.Gui.ListView`1:PaintHeaderCell                        
             Hyena.Data.Gui.ListView`1:PaintHeader                        
           Hyena.Data.Gui.ListView`1:OnExposeEvent                        
                         Gtk.Widget:exposeevent_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

                                     type=object[] 133672  2.5M 20.0   0.0
                             GLib.Opaque:GetOpaque                        
                        Pango.FontDescription:Copy                        
              Hyena.Data.Gui.ColumnCellText:Render                        
        Hyena.Data.Gui.ColumnHeaderCellText:Render                        
         Hyena.Data.Gui.ListView`1:PaintHeaderCell                        
             Hyena.Data.Gui.ListView`1:PaintHeader                        
           Hyena.Data.Gui.ListView`1:OnExposeEvent                        
                         Gtk.Widget:exposeevent_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

                                type=System.Type[] 133672  2.5M 20.0   0.0
                   System.Activator:CreateInstance                        
                   System.Activator:CreateInstance                        
                   System.Activator:CreateInstance                        
                             GLib.Opaque:GetOpaque                        
                 Pango.Context:get_FontDescription                        
              Hyena.Data.Gui.ColumnCellText:Render                        
        Hyena.Data.Gui.ColumnHeaderCellText:Render                        
         Hyena.Data.Gui.ListView`1:PaintHeaderCell                        
             Hyena.Data.Gui.ListView`1:PaintHeader                        
           Hyena.Data.Gui.ListView`1:OnExposeEvent                        
                         Gtk.Widget:exposeevent_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

                                     type=object[] 133672  2.5M 20.0   0.0
                             GLib.Opaque:GetOpaque                        
                 Pango.Context:get_FontDescription                        
              Hyena.Data.Gui.ColumnCellText:Render                        
        Hyena.Data.Gui.ColumnHeaderCellText:Render                        
         Hyena.Data.Gui.ListView`1:PaintHeaderCell                        
             Hyena.Data.Gui.ListView`1:PaintHeader                        
           Hyena.Data.Gui.ListView`1:OnExposeEvent                        
                         Gtk.Widget:exposeevent_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

                                type=System.Type[] 133672  2.5M 20.0   0.0
                   System.Activator:CreateInstance                        
                   System.Activator:CreateInstance                        
                   System.Activator:CreateInstance                        
                             GLib.Opaque:GetOpaque                        
                        Pango.FontDescription:Copy                        
              Hyena.Data.Gui.ColumnCellText:Render                        
        Hyena.Data.Gui.ColumnHeaderCellText:Render                        
         Hyena.Data.Gui.ListView`1:PaintHeaderCell                        
             Hyena.Data.Gui.ListView`1:PaintHeader                        
           Hyena.Data.Gui.ListView`1:OnExposeEvent                        
                         Gtk.Widget:exposeevent_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

                                       type=string  33552  2.4M 74.0   0.0
  System.Text.StringBuilder:InternalEnsureCapacity                        
                  System.Text.StringBuilder:Append                        
                        System.String:FormatHelper                        
                              System.String:Format                        
                              System.String:Format                        
 Banshee.GnomeBackend.GC...urationClient:CreateKey                        
 Banshee.GnomeBackend.GConfConfigurationClient:Set                        
 Banshee.GnomeBackend.GConfConfigurationClient:Set                        
     Banshee.Configuration.ConfigurationClient:Set                        
           Banshee.Configuration.SchemaEntry`1:Set                        
       <>c__CompilerGenerated1:<ConnectEvents>c__5                        
            Gtk.Widget:SizeRequestedSignalCallback                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

                                     type=object[] 133672  2.0M 16.0   0.0
                   System.Activator:CreateInstance                        
                             GLib.Opaque:GetOpaque                        
                 Pango.Context:get_FontDescription                        
              Hyena.Data.Gui.ColumnCellText:Render                        
        Hyena.Data.Gui.ColumnHeaderCellText:Render                        
         Hyena.Data.Gui.ListView`1:PaintHeaderCell                        
             Hyena.Data.Gui.ListView`1:PaintHeader                        
           Hyena.Data.Gui.ListView`1:OnExposeEvent                        
                         Gtk.Widget:exposeevent_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

                        type=Pango.FontDescription 133672  2.0M 16.0   0.0
              System.Reflection.MonoCMethod:Invoke                        
              System.Reflection.MonoCMethod:Invoke                        
                   System.Activator:CreateInstance                        
                   System.Activator:CreateInstance                        
                   System.Activator:CreateInstance                        
                             GLib.Opaque:GetOpaque                        
                 Pango.Context:get_FontDescription                        
              Hyena.Data.Gui.ColumnCellText:Render                        
        Hyena.Data.Gui.ColumnHeaderCellText:Render                        
         Hyena.Data.Gui.ListView`1:PaintHeaderCell                        
             Hyena.Data.Gui.ListView`1:PaintHeader                        
           Hyena.Data.Gui.ListView`1:OnExposeEvent                        
                         Gtk.Widget:exposeevent_cb                        
                               Gtk.Application:Run                        
                     Banshee.Gui.GtkBaseClient:Run                        
                 Banshee.Gui.GtkBaseClient:Startup                        
                Hyena.Gui.CleanRoomStartup:Startup                        
                   Banshee.Gui.GtkBaseClient:Entry                        
                                Nereid.Client:Main                        

(skipped 71563 backtraces)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]