[Spice-devel] spice-gtk / remote viewer leaks (gobs of) memory - possibly related to animated mouse cursor?
David Mansfield
spice at dm.cobite.com
Tue May 6 07:52:24 PDT 2014
On 05/06/2014 09:49 AM, David Mansfield wrote:
>
> On 05/06/2014 06:04 AM, Marc-André Lureau wrote:
>> Hi
>>
>> ----- Original Message -----
>>> On 05/05/2014 04:10 PM, Marc-André Lureau wrote:
>>>> Hi
>>>>
>>>> ----- Original Message -----
>>>>> Any way to easily trace memory leaks in remote-viewer? A naive
>>>>> attempt
>>>>> at "valgrind remote-viewer spice://blah" didn't turn up anything in
>>>>> particular.
>>>> Have you tried with massif? It usually gives pretty good hints.
>>> Here is "ms_print" output. I've never used massif before, is this
>>> helpful?
>> This massif profile doesn't show a large memory usage or any obvious
>> leak.
>>
>> Are you looking at virtual or resident (RSS) memory usage? (remember
>> that
>> only RSS really "count")
> Yes, RSS goes over 2GB easily with 8 hours of usage.
>
> I have changed spice-widget.c as follows:
>
> @@ -2205,14 +2210,15 @@
> (GdkPixbufDestroyNotify)g_free, NULL);
> d->mouse_hotspot.x = hot_x;
> d->mouse_hotspot.y = hot_y;
> - cursor =
> gdk_cursor_new_from_pixbuf(gtk_widget_get_display(GTK_WIDGET(display)),
> - d->mouse_pixbuf, hot_x,
> hot_y);
> + cursor =
> gdk_cursor_new_for_display(gtk_widget_get_display(GTK_WIDGET(display)), GDK_FLEUR);
>
> + //cursor =
> gdk_cursor_new_from_pixbuf(gtk_widget_get_display(GTK_WIDGET(display)),
> + // d->mouse_pixbuf, hot_x,
> hot_y);
> } else
> g_warn_if_reached();
>
>
> And, while it's true I only get a hand cursor no matter what, there is
> no leak. I can wiggle the mouse to my heart's content and the RSS
> stays flat (after initially increasing to fill the local tile cache).
> There is 100% no doubt in my mind that there is a leak here. Although
> the code looks correct to me.
>
> I also tried changing gdk_cursor_unref to g_object_unref but it made
> no difference.
I'm certainly not familiar with gtk3/gdk internals, but it seems like
gdk/gdkcursor.c (in function gdk_cursor_new_from_pixbuf, line 385 in
F20) allocates a "cairo surface" for each cursor that is created from
pixbuf that is leaked.
Any gdk gurus on the list to check this?
--
Thanks,
David Mansfield
Cobite, INC.
More information about the Spice-devel
mailing list