From dda69bd16d170e1e80cb702a3df9ab315de392f9 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 27 Mar 2021 19:56:36 -0400 Subject: [PATCH 1/7] tests: Plug memory leaks This one was pointed out by asan. --- testsuite/gdk/pixbuf.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/testsuite/gdk/pixbuf.c b/testsuite/gdk/pixbuf.c index 592f5d0d32..8e34254074 100644 --- a/testsuite/gdk/pixbuf.c +++ b/testsuite/gdk/pixbuf.c @@ -14,7 +14,7 @@ main (int argc, char *argv[]) for (GSList *l = formats; l; l = l->next) { GdkPixbufFormat *format = l->data; - const char *name; + char *name; name = gdk_pixbuf_format_get_name (format); @@ -22,6 +22,8 @@ main (int argc, char *argv[]) have_png = TRUE; else if (strcmp (name, "jpeg") == 0) have_jpeg = TRUE; + + g_free (name); } if (!have_png || !have_jpeg) From 5d5adf6ee7a05a9b579fb8a15a57c75f7abf7657 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 27 Mar 2021 20:20:49 -0400 Subject: [PATCH 2/7] asan: Ignore leaks from librsvg Turns out that there are some leaks from librsvg. --- lsan.supp | 1 + 1 file changed, 1 insertion(+) diff --git a/lsan.supp b/lsan.supp index dddb9b91f6..32185fc61a 100644 --- a/lsan.supp +++ b/lsan.supp @@ -7,3 +7,4 @@ leak:libglib-2.0.so leak:libgio-2.0.so leak:libcairo.so leak:libpixman-1.so +leak:librsvg-2.so From b8693cc4f45453f830c5cb9357238e4eebb4daba Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 27 Mar 2021 20:44:18 -0400 Subject: [PATCH 3/7] tests: Make the pixbuf test use TAP Otherwise, meson just considers this test skipped. --- testsuite/gdk/pixbuf.c | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/testsuite/gdk/pixbuf.c b/testsuite/gdk/pixbuf.c index 8e34254074..591444fd86 100644 --- a/testsuite/gdk/pixbuf.c +++ b/testsuite/gdk/pixbuf.c @@ -1,33 +1,42 @@ #include -int -main (int argc, char *argv[]) +static void +test_format (gconstpointer d) { + const char *f = d; GSList *formats; - gboolean have_png, have_jpeg; + gboolean found; - have_png = FALSE; - have_jpeg = FALSE; + found = FALSE; formats = gdk_pixbuf_get_formats (); - for (GSList *l = formats; l; l = l->next) + for (GSList *l = formats; l && !found; l = l->next) { GdkPixbufFormat *format = l->data; char *name; name = gdk_pixbuf_format_get_name (format); - if (strcmp (name, "png") == 0) - have_png = TRUE; - else if (strcmp (name, "jpeg") == 0) - have_jpeg = TRUE; + if (strcmp (name, f) == 0) + found = TRUE; g_free (name); } - if (!have_png || !have_jpeg) - return 1; + g_slist_free (formats); - return 0; + g_assert_true (found); +} + + +int +main (int argc, char *argv[]) +{ + g_test_init (&argc, &argv, NULL); + + g_test_add_data_func ("/pixbuf/format/png", "png", test_format); + g_test_add_data_func ("/pixbuf/format/jpeg", "jpeg", test_format); + + return g_test_run (); } From d24a0e96062ed42d3f3fe57d7b8ed0a7d9fed972 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 27 Mar 2021 21:13:25 -0400 Subject: [PATCH 4/7] tests: Plug a memory leak --- testsuite/gtk/bitset.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/testsuite/gtk/bitset.c b/testsuite/gtk/bitset.c index 110dc1401e..2c01912317 100644 --- a/testsuite/gtk/bitset.c +++ b/testsuite/gtk/bitset.c @@ -553,6 +553,9 @@ test_splice_overflow (void) compare = gtk_bitset_new_range (16, 1); g_assert_true (gtk_bitset_equals (set, compare)); + + gtk_bitset_unref (compare); + gtk_bitset_unref (set); } int From e1866d8fbee689ec32ec45b11bf152d1ab970617 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 27 Mar 2021 21:43:59 -0400 Subject: [PATCH 5/7] Ignore pthread allocations in valgrind --- gtk.supp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gtk.supp b/gtk.supp index 1211eeea2c..927d6f102b 100644 --- a/gtk.supp +++ b/gtk.supp @@ -285,3 +285,11 @@ ... fun:g_intern_static_string } + +# Threads +{ + pthread + Memcheck:Leak + fun:calloc + fun:_dl_allocate_tls +} From ffa50f4c24eeebf31381554651615287b61fc6c1 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 27 Mar 2021 21:44:19 -0400 Subject: [PATCH 6/7] Plug a memory leak in an error path --- gtk/gtkcssprovider.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c index 3b1caa7125..43882cf385 100644 --- a/gtk/gtkcssprovider.c +++ b/gtk/gtkcssprovider.c @@ -1052,6 +1052,8 @@ gtk_css_provider_load_internal (GtkCssProvider *self, "Failed to import: %s", load_error->message); } + + g_error_free (load_error); } } From db126a19b600166caf3c268c3a0deca18a5c881e Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 27 Mar 2021 21:52:49 -0400 Subject: [PATCH 7/7] Plug a test memleak --- testsuite/gtk/stringlist.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testsuite/gtk/stringlist.c b/testsuite/gtk/stringlist.c index 63a1f6def4..93e9720d2c 100644 --- a/testsuite/gtk/stringlist.c +++ b/testsuite/gtk/stringlist.c @@ -167,7 +167,7 @@ test_create_builder (void) list = GTK_STRING_LIST (gtk_builder_get_object (builder, "list")); assert_model (list, "a b c"); - g_object_unref (list); + g_object_unref (builder); } static void