Memory leak in libwnck

I tried to compile the first example introducing libwnck :

#include <libwnck/libwnck.h>
int main (int argc, char **argv)
{
    WnckScreen *screen;
    WnckWindow *active_window;
    GList *window_l;

    gdk_init (&argc, &argv);
    screen = wnck_screen_get_default ();
    wnck_screen_force_update (screen);
    active_window = wnck_screen_get_active_window (screen);
    for (window_l = wnck_screen_get_windows (screen); window_l != NULL; window_l = window_l->next)
    {
        WnckWindow *window = WNCK_WINDOW (window_l->data);
        g_print ("%s%s\n", wnck_window_get_name (window),
                window == active_window ? " (active)" : "");
    }
    wnck_shutdown();
}

      

with this command line:

gcc -o testwnck testwnck.cpp -DWNCK_I_KNOW_THIS_IS_UNSTABLE `pkg-config --libs libwnck-3.0` `pkg-config --cflags libwnck-3.0`

      

but when i run it through valgrind many errors appear. For example:

==20365== 96 bytes in 2 blocks are possibly lost in loss record 876 of 1,019
==20365==    at 0x4C28F40: malloc (vg_replace_malloc.c:296)
==20365==    by 0x6F6E0A0: g_malloc (in /usr/lib64/libglib-2.0.so.0.4200.0)
==20365==    by 0x6F84BB5: g_memdup (in /usr/lib64/libglib-2.0.so.0.4200.0)
==20365==    by 0x6CFD364: type_iface_vtable_base_init_Wm (in /usr/lib64/libgobject-2.0.so.0.4200.0)
==20365==    by 0x6CFE5BC: g_type_class_ref (in /usr/lib64/libgobject-2.0.so.0.4200.0)
==20365==    by 0x6CE79D4: g_object_new_valist (in /usr/lib64/libgobject-2.0.so.0.4200.0)
==20365==    by 0x6CE7BD3: g_object_new (in /usr/lib64/libgobject-2.0.so.0.4200.0)
==20365==    by 0x6745E6B: gdk_pixbuf_new_from_data (in /usr/lib64/libgdk_pixbuf-2.0.so.0.3000.8)
==20365==    by 0x4E60681: scaled_from_pixdata (in /usr/lib64/libwnck-3.so.0.2.2)
==20365==    by 0x4E62DE7: _wnck_read_icons (in /usr/lib64/libwnck-3.so.0.2.2)
==20365==    by 0x4E57F74: get_icons (in /usr/lib64/libwnck-3.so.0.2.2)
==20365==    by 0x4E58DC6: force_update_now (in /usr/lib64/libwnck-3.so.0.2.2)

      

Adding a call to wnck_shutdown()

just before returning from the main function doesn't help. What can I do to suppress these errors?

EDIT . I also tried using the gtk suppression file from valgrind, but I still have errors.

+3


source to share


1 answer


If a leak is still reported when using the latest GLib suppression file , please file a bug with libwnck , as it is a likely leak in libwnck itself.



However, I suspect that the allocation youre is one of the type class allocations that GObject makes once for a new instance of the class, which are deliberately never freed (they are essentially part of the runtime). But this is fine because they are only executed once, when the type is first used. The suppression file should suppress them.

0


source







All Articles